text:
package org.develnext.jphp.ext.javafx;

import javafx.application.Application;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.event.Event;
import javafx.fxml.FXMLLoader;
import javafx.scene.Node;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.input.*;
import javafx.scene.layout.*;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.scene.shape.Shape;
import javafx.scene.text.Font;
import javafx.scene.web.*;
import javafx.stage.*;
import org.develnext.jphp.ext.javafx.bind.CursorMemoryOperation;
import org.develnext.jphp.ext.javafx.bind.InsetsMemoryOperation;
import org.develnext.jphp.ext.javafx.bind.KeyCombinationMemoryOperation;
import org.develnext.jphp.ext.javafx.classes.*;
import org.develnext.jphp.ext.javafx.classes.data.Data;
import org.develnext.jphp.ext.javafx.classes.event.*;
import org.develnext.jphp.ext.javafx.classes.layout.*;
import org.develnext.jphp.ext.javafx.classes.paint.UXColor;
import org.develnext.jphp.ext.javafx.classes.shape.UXCircle;
import org.develnext.jphp.ext.javafx.classes.shape.UXShape;
import org.develnext.jphp.ext.javafx.classes.text.UXFont;
import org.develnext.jphp.ext.javafx.support.EventProvider;
import org.develnext.jphp.ext.javafx.support.event.*;
import php.runtime.env.CompileScope;
import php.runtime.ext.support.Extension;
import php.runtime.memory.support.MemoryOperation;

import java.awt.event.InputEvent;

public class JavaFXExtension extends Extension {
    public final static String NS = "php\\gui\\";

    @Override
    public Status getStatus() {
        return Status.EXPERIMENTAL;
    }

    @Override
    public String getVersion() {
        return "1.0";
    }

    @Override
    public void onRegister(CompileScope scope) {
        registerMemoryOperation(KeyCombinationMemoryOperation.class);
        registerMemoryOperation(CursorMemoryOperation.class);
        registerMemoryOperation(InsetsMemoryOperation.class);

        registerWrapperClass(scope, ObservableList.class, UXList.class);
        registerWrapperClass(scope, Application.class, UXApplication.class);

        registerWrapperClass(scope, Font.class, UXFont.class);
        registerWrapperClass(scope, Color.class, UXColor.class);
        registerWrapperClass(scope, Image.class, UXImage.class);

        registerWrapperClass(scope, Window.class, UXWindow.class);
        registerWrapperClass(scope, Stage.class, UXForm.class);
        registerWrapperClass(scope, PopupWindow.class, UXPopupWindow.class);
        registerWrapperClass(scope, Tooltip.class, UXTooltip.class);
        registerWrapperClass(scope, ContextMenu.class, UXContextMenu.class);
        registerWrapperClass(scope, MenuItem.class, UXMenuItem.class);
        registerWrapperClass(scope, Menu.class, UXMenu.class);
       // MemoryOperation.registerWrapper(SeparatorMenuItem.class, UXMenuItem.class);
        registerWrapperClass(scope, Scene.class, UXScene.class);

        registerWrapperClass(scope, Node.class, UXNode.class);
        registerWrapperClass(scope, Parent.class, UXParent.class);
        registerWrapperClass(scope, Region.class, UXRegion.class);
        registerWrapperClass(scope, Control.class, UXControl.class);

        registerWrapperClass(scope, Pane.class, UXPane.class);
        registerWrapperClass(scope, AnchorPane.class, UXAnchorPane.class);
        registerWrapperClass(scope, StackPane.class, UXStackPane.class);
        registerWrapperClass(scope, VBox.class, UXVBox.class);
        registerWrapperClass(scope, HBox.class, UXHBox.class);

        registerWrapperClass(scope, Labeled.class, UXLabeled.class);
        registerWrapperClass(scope, ButtonBase.class, UXButtonBase.class);
        registerWrapperClass(scope, Button.class, UXButton.class);
        registerWrapperClass(scope, ToggleGroup.class, UXToggleGroup.class);
        registerWrapperClass(scope, ToggleButton.class, UXToggleButton.class);
        registerWrapperClass(scope, CheckBox.class, UXCheckbox.class);
        registerWrapperClass(scope, ImageView.class, UXImageView.class);
        registerWrapperClass(scope, MenuBar.class, UXMenuBar.class);
        registerWrapperClass(scope, TextInputControl.class, UXTextInputControl.class);
        registerWrapperClass(scope, TextArea.class, UXTextArea.class);
        registerWrapperClass(scope, TextField.class, UXTextField.class);
        registerWrapperClass(scope, PasswordField.class, UXPasswordField.class);
        registerWrapperClass(scope, Label.class, UXLabel.class);
        registerWrapperClass(scope, Hyperlink.class, UXHyperlink.class);
        registerWrapperClass(scope, ComboBoxBase.class, UXComboBoxBase.class);
        registerWrapperClass(scope, ComboBox.class, UXComboBox.class);
        registerWrapperClass(scope, ChoiceBox.class, UXChoiceBox.class);
        registerWrapperClass(scope, ColorPicker.class, UXColorPicker.class);
        registerWrapperClass(scope, ProgressIndicator.class, UXProgressIndicator.class);
        registerWrapperClass(scope, ProgressBar.class, UXProgressBar.class);
        registerWrapperClass(scope, HTMLEditor.class, UXHtmlEditor.class);
        registerWrapperClass(scope, WebEngine.class, UXWebEngine.class);
        registerWrapperClass(scope, WebView.class, UXWebView.class);
        registerWrapperClass(scope, Tab.class, UXTab.class);
        registerWrapperClass(scope, TabPane.class, UXTabPane.class);
        registerWrapperClass(scope, ScrollPane.class, UXScrollPane.class);
        registerWrapperClass(scope, TitledPane.class, UXTitledPane.class);
        registerWrapperClass(scope, SplitPane.class, UXSplitPane.class);
        registerWrapperClass(scope, TreeItem.class, UXTreeItem.class);
        registerWrapperClass(scope, TreeView.class, UXTreeView.class);
        registerWrapperClass(scope, Separator.class, UXSeparator.class);
        registerWrapperClass(scope, ListView.class, UXListView.class);
        registerWrapperClass(scope, FileChooser.class, UXFileChooser.class);
        registerWrapperClass(scope, DirectoryChooser.class, UXDirectoryChooser.class);

        registerWrapperClass(scope, Cell.class, UXCell.class);
        registerWrapperClass(scope, TableView.class, UXTableView.class);
        registerWrapperClass(scope, TableColumnBase.class, UXTableColumn.class);
        registerWrapperClass(scope, TableCell.class, UXTableCell.class);
        registerWrapperClass(scope, ListCell.class, UXListCell.class);
        MemoryOperation.registerWrapper(TableColumn.class, UXTableColumn.class);
        MemoryOperation.registerWrapper(IndexedCell.class, UXCell.class);

        registerWrapperClass(scope, Shape.class, UXShape.class);
        registerWrapperClass(scope, Circle.class, UXCircle.class);

        MemoryOperation.registerWrapper(InputEvent.class, UXEvent.class);
        MemoryOperation.registerWrapper(ActionEvent.class, UXEvent.class);
        MemoryOperation.registerWrapper(InputMethodEvent.class, UXEvent.class);
        MemoryOperation.registerWrapper(TreeView.EditEvent.class, UXEvent.class);
        MemoryOperation.registerWrapper(ListView.EditEvent.class, UXEvent.class);
        MemoryOperation.registerWrapper(TreeTableView.EditEvent.class, UXEvent.class);
        registerWrapperClass(scope, Event.class, UXEvent.class);

        registerWrapperClass(scope, MouseEvent.class, UXMouseEvent.class);
        registerWrapperClass(scope, KeyEvent.class, UXKeyEvent.class);
        registerWrapperClass(scope, WindowEvent.class, UXWindowEvent.class);
        registerWrapperClass(scope, ContextMenuEvent.class, UXContextMenuEvent.class);
        registerWrapperClass(scope, DragEvent.class, UXDragEvent.class);
        registerWrapperClass(scope, WebEvent.class, UXWebEvent.class);
        registerWrapperClass(scope, WebErrorEvent.class, UXWebErrorEvent.class);

        registerWrapperClass(scope, FXMLLoader.class, UXLoader.class);
        registerWrapperClass(scope, Data.class, UXData.class);
        registerWrapperClass(scope, Alert.class, UXAlert.class);

        registerClass(scope, UXDialog.class);
        registerClass(scope, UXClipboard.class);

        registerEvents();
    }

    protected void registerEvents() {
        registerEventProvider(new NodeEventProvider());
        registerEventProvider(new WindowEventProvider());
        registerEventProvider(new ContextMenuEventProvider());
        registerEventProvider(new MenuItemEventProvider());
        registerEventProvider(new MenuEventProvider());
        registerEventProvider(new ButtonBaseEventProvider());
        registerEventProvider(new ComboBoxBaseEventProvider());
        registerEventProvider(new ChoiceBoxEventProvider());
        registerEventProvider(new WebEngineEventProvider());
        registerEventProvider(new TreeViewEventProvider());
        registerEventProvider(new TabEventProvider());
    }

    protected void registerEventProvider(EventProvider eventProvider) {
        EventProvider.register(eventProvider);
    }
}


text:
package backend.codegen.dagisel;

/**
 * @author Jianping Zeng.
 * @version 0.4
 */
public interface BuiltinOpcodes {
  byte OPC_Scope = 0;
  byte OPC_RecordNode = 1;
  byte OPC_RecordChild0 = 2;
  byte OPC_RecordChild1 = 3;
  byte OPC_RecordChild2 = 4;
  byte OPC_RecordChild3 = 5;
  byte OPC_RecordChild4 = 6;
  byte OPC_RecordChild5 = 7;
  byte OPC_RecordChild6 = 8;
  byte OPC_RecordChild7 = 9;
  byte OPC_RecordMemRef = 10;
  byte OPC_CaptureFlagInput = 11;
  byte OPC_MoveChild = 12;
  byte OPC_MoveParent = 13;
  byte OPC_CheckSame = 14;
  byte OPC_CheckPatternPredicate = 15;
  byte OPC_CheckPredicate = 16;
  byte OPC_CheckOpcode = 17;
  byte OPC_SwitchOpcode = 18;
  byte OPC_CheckType = 19;
  byte OPC_SwitchType = 20;
  byte OPC_CheckChild0Type = 21;
  byte OPC_CheckChild1Type = 22;
  byte OPC_CheckChild2Type = 23;
  byte OPC_CheckChild3Type = 24;
  byte OPC_CheckChild4Type = 25;
  byte OPC_CheckChild5Type = 26;
  byte OPC_CheckChild6Type = 27;
  byte OPC_CheckChild7Type = 28;
  byte OPC_CheckInteger = 29;
  byte OPC_CheckCondCode = 30;
  byte OPC_CheckValueType = 31;
  byte OPC_CheckComplexPat = 32;
  byte OPC_CheckAndImm = 33;
  byte OPC_CheckOrImm = 34;
  byte OPC_CheckFoldableChainNode = 35;

  byte OPC_EmitInteger = 36;
  byte OPC_EmitRegister = 37;
  byte OPC_EmitConvertToTarget = 38;
  byte OPC_EmitMergeInputChains = 39;
  byte OPC_EmitCopyToReg = 40;
  byte OPC_EmitNodeXForm = 41;
  byte OPC_EmitNode = 42;
  byte OPC_MorphNodeTo = 43;
  byte OPC_MarkFlagResults = 44;
  byte OPC_CompleteMatch = 45;
};

redpajama_set_name: RedPajamaGithub


text:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<TITLE>
All Classes
</TITLE>
<link href="groovy.ico" type="image/x-icon" rel="shortcut icon">
<link href="groovy.ico" type="image/x-icon" rel="icon">
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">

All Classes

Behavior

BuildConfig

DataSource

HibernateGrailsPlugin

UrlMappings

_Install

_Uninstall

_Upgrade


text: System testing for nmeta


text:
Security Issues
===============

This document explains how Sylius issues are handled by the Sylius
core team.

Reporting a Security Issue
--------------------------

If you think that you have found a security issue in Sylius, don't use the
bug tracker and do not post it publicly. Instead, all
security issues must be sent to **security [at] sylius.org**. Emails sent to
this address are forwarded to the Sylius core team members.

Resolving Process
-----------------

For each report, we first try to confirm the vulnerability. When it is
confirmed, the team works on a solution following these steps:

1. Send an acknowledgement to the reporter;
2. Work on a patch;
3. Write a security announcement for the official Sylius `blog`_ about the
   vulnerability. This post should contain the following information:

   * a title that always include the "Security release" string;
   * a description of the vulnerability;
   * the affected versions;
   * the possible exploits;
   * how to patch/upgrade/workaround affected applications;
   * credits.
4. Send the patch and the announcement to the reporter for review;
5. Apply the patch to all maintained versions of Sylius;
6. Publish the post on the official Sylius `blog`_;
7. Update the security advisory list (see below).

.. note::

    Releases that include security issues should not be done on Saturday or
    Sunday, except if the vulnerability has been publicly posted.

.. note::

    While we are working on a patch, please do not reveal the issue publicly.

.. _Git repository:      https://github.com/Sylius/Sylius
.. _blog:                http://sylius.org/blog


text:
/* C++ code produced by gperf version 3.0.3 */
/* Command-line: gperf -L C++ -E -t /private/var/folders/rb/k66tqww10cs_2jrs86wxgq800000gn/T/benjamin/timely-generated/KrollGeneratedBindings.gperf  */
/* Computed positions: -k'' */

#line 3 "/private/var/folders/rb/k66tqww10cs_2jrs86wxgq800000gn/T/benjamin/timely-generated/KrollGeneratedBindings.gperf"

#include <string.h>
#include <v8.h>
#include <KrollBindings.h>

#include "ti.mely.TimelyModule.h"
#include "ti.mely.TimerProxy.h"

#line 14 "/private/var/folders/rb/k66tqww10cs_2jrs86wxgq800000gn/T/benjamin/timely-generated/KrollGeneratedBindings.gperf"
struct titanium::bindings::BindEntry;
/* maximum key range = 3, duplicates = 0 */

class TimelyBindings
{
private:
  static inline unsigned int hash (const char *str, unsigned int len);
public:
  static struct titanium::bindings::BindEntry *lookupGeneratedInit (const char *str, unsigned int len);
};

inline /*ARGSUSED*/
unsigned int
TimelyBindings::hash (register const char *str, register unsigned int len)
{
  return len;
}

struct titanium::bindings::BindEntry *
TimelyBindings::lookupGeneratedInit (register const char *str, register unsigned int len)
{
  enum
    {
      TOTAL_KEYWORDS = 2,
      MIN_WORD_LENGTH = 18,
      MAX_WORD_LENGTH = 20,
      MIN_HASH_VALUE = 18,
      MAX_HASH_VALUE = 20
    };

  static struct titanium::bindings::BindEntry wordlist[] =
    {
      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
#line 17 "/private/var/folders/rb/k66tqww10cs_2jrs86wxgq800000gn/T/benjamin/timely-generated/KrollGeneratedBindings.gperf"
      {"ti.mely.TimerProxy", ::ti::mely::timely::TimerProxy::bindProxy, ::ti::mely::timely::TimerProxy::dispose},
      {""},
#line 16 "/private/var/folders/rb/k66tqww10cs_2jrs86wxgq800000gn/T/benjamin/timely-generated/KrollGeneratedBindings.gperf"
      {"ti.mely.TimelyModule", ::ti::mely::TimelyModule::bindProxy, ::ti::mely::TimelyModule::dispose}
    };

  if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
    {
      register int key = hash (str, len);

      if (key <= MAX_HASH_VALUE && key >= 0)
        {
          register const char *s = wordlist[key].name;

          if (*str == *s && !strcmp (str + 1, s + 1))
            return &wordlist[key];
        }
    }
  return 0;
}
#line 18 "/private/var/folders/rb/k66tqww10cs_2jrs86wxgq800000gn/T/benjamin/timely-generated/KrollGeneratedBindings.gperf"


text:
@interface PodsDummy_Pods_Morph_iOS_Examples : NSObject
@end
@implementation PodsDummy_Pods_Morph_iOS_Examples
@end


text:
@echo off

set "CATALINA_HOME=${project.build.directory}\\apache-tomcat-${tomcat.version}"
set "CATALINA_BASE=${project.build.directory}\\base-instance"
call "%CATALINA_HOME%\\bin\\catalina.bat" start


text:
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta content="history" name="save" />
    <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5" />
    <title>IAnswerMessageTraverser(TAnswer) Members</title>
    <xml>
    </xml>
    <link rel="stylesheet" type="text/css" href="MSDN.css" />

            OpenPop.NET POP3 Library Documentation

IAnswerMessageTraverser(TAnswer) Members

        IAnswerMessageTraverser(TAnswer) overview

Public Instance Methods

VisitMessage	 Call this when you want to apply this traverser on a Message.

VisitMessagePart	 Call this when you want to apply this traverser on a MessagePart.

See Also

        IAnswerMessageTraverser<TAnswer> Interface | OpenPop.Mime.Traverse Namespace

      <object type="application/x-oleobject" classid="clsid:1e2a7bd0-dab9-11d0-b93a-00c04fc99f9e" viewastext="true" style="display: none;">
        <param name="Keyword" value="IAnswerMessageTraverser(TAnswer) interface">
        </param>
        <param name="Keyword" value="OpenPop.Mime.Traverse.IAnswerMessageTraverser`1 interface">
        </param>
        <param name="Keyword" value="IAnswerMessageTraverser(TAnswer) interface, all members">
        </param>
      </object>

          Send comments on this topic.

          Public Domain Dedication

Generated from assembly OpenPop [2.0.4.369] by NDoc3


text:
from sklearn import svm, cross_validation, datasets

iris = datasets.load_iris()
X, y = iris.data, iris.target

model = svm.SVC()
print cross_validation.cross_val_score(model, X, y, scoring='precision')
print cross_validation.cross_val_score(model, X, y, scoring='mean_squared_error')


text:
namespace StiGame
{

class WindowEventThrower;
/// \class WindowEventListener
/// \brief Window Event Listener
class WindowEventListener
{
public:
    /// \brief Constructor
	WindowEventListener();
    /// \brief Destructor
	virtual ~WindowEventListener();
    /// \brief Method that inherited class must override to handle these event
    /// \param src Event Thrower
    /// \param args Event Args
	virtual void handleEvent(WindowEventThrower *src, WindowEventArgs *args);
};

}

#endif


text:
package com.ewerk.prototype.persistence.converters;

import static java.time.ZoneId.systemDefault;
import static java.util.Date.from;

import org.jetbrains.annotations.Nullable;
import org.springframework.core.convert.converter.Converter;

import java.time.LocalDate;
import java.util.Date;

public class LocalDateToDateConverter implements Converter<LocalDate, Date> {
  private static final String TO_STRING =
      '{' + LocalDate.class.getSimpleName() + " -> " + Date.class.getSimpleName() + '}';

  @Nullable
  @Override
  public Date convert(final LocalDate localDate) {
    if (localDate == null) {
      return null;
    }
    return from(localDate.atStartOfDay(systemDefault()).toInstant());
  }

  @Override
  public String toString() {
    return TO_STRING;
  }
}


text:
package gdv.xport.srv.web;

import gdv.xport.srv.config.AppConfig;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.hamcrest.MatcherAssert;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.mock.web.MockHttpServletResponse;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.web.servlet.MockMvc;

import static org.hamcrest.CoreMatchers.containsString;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;

/**
 * Integrationstests fuer den {@link IndexController}.
 *
 * @author oboehm
 */
@AutoConfigureMockMvc
@ContextConfiguration(classes = {IndexController.class, AppConfig.class})
@WebMvcTest
class IndexControllerIT {

    private static final Logger log = LogManager.getLogger(IndexControllerIT.class);

    @Autowired
    private MockMvc mockMVC;

    @Test
    void testSetup() {
        log.info("testSetup() wurde gestartet.");
        assertNotNull(mockMVC);
    }

    /**
     * Mit diesem Test pruefen wir, ob wir die "index.html"-Seite bekommen.
     */
    @Test
    void testIndexHtml() throws Exception {
        MockHttpServletResponse response = mockMVC.perform(get("/")).andReturn().getResponse();
        assertEquals(200, response.getStatus());
        MatcherAssert.assertThat(response.getContentAsString(), containsString("<title>"));
    }

}


text:
@implementation FBSDKGraphRequestPiggybackManagerProvider

+ (Class<FBSDKGraphRequestPiggybackManaging>)piggybackManager
{
  return FBSDKGraphRequestPiggybackManager.class;
}

@end


text:
var server = require('./server');

var config = {
	serverPort: 3000,
	serverHost: 'localhost',
	staticFileServerPort: 4000,
	staticServerHost: 'localhost',
	socketioPort: 5000,
	uploadDir: __dirname + '/static/UPLOAD_FILES',
	mongodb: {
		dburl : 'localhost:27017/test',
		username : '',
		password : ''
	}
};

var router = {
	'/': 'index',
	'post:/upload': 'upload',
	'/history' : 'history',
	'/close' : 'closeServer'
};

server.start(config, router);


text:
package org.apache.camel.spring.contextscan;

import org.apache.camel.spring.SpringTestSupport;
import org.springframework.context.support.AbstractXmlApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class ContextScanOnExceptionAndDLCErrorHandlerReverseTest extends SpringTestSupport {

    public void testFoo() throws Exception {
        getMockEndpoint("mock:foo").expectedMessageCount(1);
        getMockEndpoint("mock:dead").expectedMessageCount(0);
        getMockEndpoint("mock:handle-foo").expectedMessageCount(1);
        getMockEndpoint("mock:handle-bar").expectedMessageCount(0);

        template.sendBody("direct:foo", "Hello World");

        assertMockEndpointsSatisfied();
    }

    public void testBar() throws Exception {
        getMockEndpoint("mock:bar").expectedMessageCount(1);
        getMockEndpoint("mock:dead").expectedMessageCount(0);
        getMockEndpoint("mock:handle-foo").expectedMessageCount(0);
        getMockEndpoint("mock:handle-bar").expectedMessageCount(1);

        template.sendBody("direct:bar", "Hello World");

        assertMockEndpointsSatisfied();
    }

    @Override
    protected AbstractXmlApplicationContext createApplicationContext() {
        return new ClassPathXmlApplicationContext("org/apache/camel/spring/contextscan/ContextScanOnExceptionAndDLCErrorHandlerReverse.xml");
    }
}


text:
import java.util.Arrays;

public class FormatStringBugs {

    public String stuff(String[] args, String thing) {
        System.out.printf("%s%n", Arrays.toString(new int[] { 1, 2 }));
        System.out.printf("%s%n", thing);
        System.out.printf("%d %s %s %n", 5, Boolean.FALSE, thing);
        System.out.printf("%s%n", Arrays.toString(args));

        return String.format("%nSize: %d contents: %s %n", args.length, Arrays.asList(args));
    }

}


text:
PEGASUS_NAMESPACE_BEGIN

CIMIndicationConsumerProvider::CIMIndicationConsumerProvider(void)
{
}

CIMIndicationConsumerProvider::~CIMIndicationConsumerProvider(void)
{
}

PEGASUS_NAMESPACE_END


text:
ACCEPTED

#### According to
The Catalogue of Life, 3rd January 2011

#### Published in
Flechten Follmann (Cologne), Contributions to Lichenology in Honour of Gerhard Follmann 383 (1995)

#### Original name
Anzia lopezii Yoshim.

### Remarks
null


text:
> Repeat the given string, n times.

## Install
Install with [npm](npmjs.org):

```bash
npm i repeat-string --save-dev
```

## Usage
Require `repeat-string`:

```js
var repeatString = require('repeat-string');
console.log(repeatString('A', 5));
//=> AAAAA
```

## Author

**Jon Schlinkert**

+ [github/jonschlinkert](https://github.com/jonschlinkert)
+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert)

## License
Copyright (c) 2014 Jon Schlinkert, contributors.
Released under the MIT license

***

_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on May 03, 2014._


text:
require 'httparty'
require 'nokogiri'
require 'active_support/core_ext/hash'

require 'ares/version'
require 'ares/errors'
require 'ares/logging'
require 'ares/http'

require 'ares/responses'
require 'ares/responses/base'
require 'ares/responses/standard'
require 'ares/responses/basic'

require 'ares/client/base'
require 'ares/client/standard'
require 'ares/client/basic'

require 'ico-validator'

module Ares
  # Default timeout for Ares requests
  DEFAULT_TIMEOUT = 5

  # Timout for Ares requests
  # Example:
  #   Ares.timeout = 4
  #   data = Ares.standard(ico: data.ico)
  mattr_accessor :timeout
  self.timeout = DEFAULT_TIMEOUT

  class << self
    include Ares::Logging

    # @see Client::Standard#call
    # @return [Responses::StandardResponse::Record]
    def standard(options)
      validate_ico_format(options[:ico])
      response = Client::Standard.call(options)
      raise ArgumentError, "Arguments #{options} are invalid" if response.error?

      response.record
    end

    # @see Client::Basic#call
    # @return [Responses::NoIdeaNow::Record]
    def basic(options)
      validate_ico_format(options[:ico])
      response = Client::Basic.call(options)
      raise ArgumentError, "Arguments #{options} are invalid" if response.error?

      response.record
    end

    private

    def validate_ico_format(ico)
      raise ArgumentError, "ICO '#{ico}' is invalid" unless IcoValidation.valid_ico?(ico)
    end
  end
end


text:
<!DOCTYPE HTML PUBLIC "-/W3C/DTD HTML 4.0 Transitional/EN">

    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

Содержание

1. Первый запуск

2. Окно чтения (общее)

2.1. Выбор модуля и книги

2.2. Окно чтения

2.3. Режим день/ночь

2.4. Настройка шрифта и фона

2.5. Авто поворот экрана

3. Работа со стихами (с текстом)

3.1. Закладки

3.2. Поделиться

3.3. Ссылки (параллельные места)

3.4. Копирование

4. История (функция)

5. Поиск по тексту

Первый запуск

При первом запуске программа создаёт на вашем устройстве папку BibleQuote, в которой будут хранится все необходимые файлы для работы с программой. Думаю самым важным является то, что в этой папке создается папка modules, которая содержит в себе файлы с текстами Писания и книг, которые вы сможете читать в программе. При установке приложения в эту папку помещаются два предустановленных модуля с русским Синодальным переводом Библии и английский перевод Библии King James Version. Но работа с программой не ограничена данным набором модулей. Вы всегда можете добавить в программу свои модули по вкусу. В интернете есть много сайтов, где можно взять такие модули. Я приведу лишь несколько из них (нажав на ссылку вы можете сразу приступить к загрузке интересующих вас модулей):

ph4.ru

bqt.narod.ru

jesuschrist.ru

После того, как вы скачаете нужные вам модули с книгами Библии или с христианской литературой, вам необходимо поместить их в папку BibleQuote/modules на диске вашего устройства. Если вы скачивали модули на компьютере, то вам необходимо подключить ваше устройство к компьютеру и произвести их копирование. Если вы скачивали модули на вашем устройстве, то вам потребуется программа для работы с файлами.

При этом, надо заметить, что расположение файлов с модулями внутри каталога BibleQuote/modules не имеет принципиального значения. Вы можете создавать внутри любую удобную для вас структуру папок. К примеру, вы можете создать отдельную папку для модулей с Писанием, отдельную папку для книг, внутри которой опять же создать отдельные папки для богословских, художественных и любых других книг. Вложенность папок ограничена только лишь возможностями Android.

ВНИМАНИЕ!!! После добавления модулей не производится их автоматического добавления в программу, так как это достаточно затратная процедура по времени. Сканирование доступных модулей производится двумя способами.

При запуске приложения программа загружает список модулей, который был доступен ранее. Но в фоновом режиме производится проверка доступных модулей и через какое-то время список модулей будет обновлен. Но так как Android не закрывает приложения долгое время, то сворачивая и запуская приложение, вы на самом деле открываете ранее запущенную программу. А, следовательно, обновления списка модулей может не произойти.

Поэтому в программу включена возможность принудительного обновления списка модулей. Откройте в приложении список модулей и нажмите кнопку "Обновить", которая находится в правом вверхнем углу.

Окно чтения (общее)

Выбор модуля и книги. После первого запуска программы открывается окно выбора модуля. Выбрав модуль, в следующем окне выбирается нужная книга в нем. После чего можно выбрать главу данной книги, если таковые конечно имеются (например, послание св. апостола Иуды открывается сразу, без выбора главы). В следующих разах программа будет открываться с последнего открытого текста, и тогда для выбора нового модуля нужно будет нажать на кнопку Библиотека (3 горизонтальных полосок). В этом меню три вкладки обозначают следующее, соответственно: список книг модуля, главы выбранной книги и список модулей.

Окно чтения. В программе есть два режима: простой и режим чтения. Переключение режимов производится двойным нажатием по экрану. В простом режиме, текст прокручивается движениями вверх вниз, или кнопками (внизу слева), где можно и перейти к следующей главе книги (в настройках можно включить прокрутку кнопками громкости). В верхней части экрана находятся кнопки: Библиотека, Поиск и История (о которых можно узнать в других разделах справки).

В режиме чтения, для перехода в который нужно нажать дважды на экран, помимо обычной есть прокрутка, которая осуществляется нажатием в нижней/верхней части экрана – для передвижения по открытому тексту, и нажатием справа/слева – для переключения к предыдущей/следующей главе книги. В настройках также можно определить, чтобы этот режим был по умолчанию.

В обоих режимах есть доступ к контекстному меню, для открытия которого следует нажать на специальную кнопку, на устройстве. В этом меню можно найти: Закладки, Настройки, Помощь, О программе и переключение режима день/ночь.

Режим день/ночь. Если Вам приходится читать ночью или Вам не удобен светлый фон чтения, то можно поменять режим чтения на ночной, в котором цвета фона и текста инвертируются. Чтобы переключить режим, нужно зайти в контекстное меню и там выбрать Режим день/ночь.

Настройка шрифта и фона. На данный момент в программе реализован выбор цветов для текста и фона на базе выбора из полной палитры цветов. Можно также выбрать подходящий размер и тип шрифта для чтения.

Авто поворот экрана. Не всегда чтение Писания производится в сидячем положении. Поэтому бывает неприятно, когда вы немного наклонились. а устройство повернуло экран чтения на 90 градусов. В то же время, где-то в других приложениях авто поворот экрана является предпочтительным поведением. Поэтому в настройке есть переключатель (Отключить автоматический поворот экрана), позволяющий заблокировать автоматическую смену ориентации экрана.

Работа со стихами (с текстом)

В простом режиме осуществляется работа с текстом. Для начала надо выбрать текст: нажать один раз на стих/стихи, чтобы выделить. После выбора текста открывается меню в котором есть следующие функции: Закладки, Поделиться, Ссылки и Копирование.

Закладки. Нажатием на кнопку Закладки выделенный текст будет добавлен в закладки. Доступ к закладкам можно получить из контекстного меню. В окне закладок отображается список закладок и кнопки сортировки и удаления. Чтобы удалить только одну закладку, надо нажать на неё и держать пару секунд, после - подтвердить удаление.

Поделиться. Функция Поделится позволяет отправить текст по SMS, MMS или электронной почте. Также возможна отправка через другие программы, например, отправить сообщением через социальные сети.

Ссылки. Тут можно посмотреть на места Св. Писания похожие на данное (параллельные места). Открывается список ссылок, где после нажатия на нужную откроется данный текст. Также можно настроить, чтобы вместе со ссылками сразу отображался и текст, этот вариант для более «сильных» устройств с большим расширением экрана.

Копирование. Выделяем текст, как было указано ранее, выбираем кнопку копирования и получаем текст, который можно вставить в любую программу на устройстве.

Для функций, которые отправляют и копируют стихи есть специальные настройки. С их помощью можно настроить необходимость разбивки текста по стихам, добавления ссылки к отрывку, настроить положение ссылки и её форму (короткая или длинная), а также указать необходимость добавления имени модуля к ссылке.

История (функция)

Для более удобного "маневрирования" по модулям, отдельным книгам в них, главам и стихам создана История. Чтобы зайти в Историю следует нажать кнопку вверху экрана при чтении (иконка часов).

Структура Истории очень проста. Есть список, в котором отображается: аббревиатура названия модуля, книга, потом номер главы и стиха (если была открыта Библия). При нажатии на определенную запись в Истории открывается этот текст.

Историю можно очистить, то есть удалить все записи. Это делается в окне Истории нажатием на кнопку корзины (справа вверху).

Также можно регулировать её вместимость (вплоть до 50 записей). Это осуществляется в меню настройки.

Поиск по тексту

Для того чтобы найти какой-то определенный текст в Писании осуществлена функция поиска. Её можно включить нажатием на соответствующую иконку в экране чтения.

В окне поиска можно задать диапазон поиска в данном модуле (то есть от одной книге до другой, например, от Бытия до Левит). Искать можно только в одном модуле, Библии. Потом вводится слово или фраза для поиска, и после нажатия на кнопку поиска программа начнет «работать». После окончания поиска, ниже поля ввода появится (при удачном поиске) список найденных текстов, при нажатии на которые откроется нужный Вам текст.


text:
<?php

namespace Core\Services\Contracts;

use LogicException;
use RuntimeException;

interface Process
{
    /**
     * Runs a process.
     *
     * The STDOUT and STDERR are also available after the process is finished via the getOutput() and getErrorOutput() methods.
     *
     * @param int|float|null $timeout Seconds to wait until the process is finished. Set null to disable the timeout.
     * @return int|null The exit code of the process (or null at timeout)
     * @throws LogicException   When process is already running
     * @throws RuntimeException When process can't be launched
     */
    public function run($timeout = 60);

    /**
     * Starts a background process.
     *
     * @throws LogicException   When process is already running
     * @throws RuntimeException When process can't be launched
     */
    public function start();

    /**
     * Waits for the process to terminate.
     *
     * @param int|float|null $timeout The timeout in seconds or null to disable
     * @return int|null The exit code of the process (or null at timeout)
     */
    public function wait($timeout = 60);

    /**
     * Terminate the process.
     *
     * This optional parameter is only useful on POSIX operating systems; you may specify a signal to send to the
     * process using the kill(2) system call. The default is SIGTERM (15).
     *
     * SIGTERM (15) is the termination signal. The default behavior is to terminate the process, but it also can be
     * caught or ignored. The intention is to kill the process, but to first allow it a chance to cleanup.
     *
     * SIGKILL (9) is the kill signal. The only behavior is to kill the process, immediately. As the process cannot
     * catch the signal, it cannot cleanup, and thus this is a signal of last resort.
     *
     * @param int $signal
     * @return bool The termination status of the process that was run.
     */
    public function terminate($signal = 15);

    /**
     * Kill the process immediately.
     *
     * @return bool The termination status of the process that was run.
     */
    public function kill();

    /**
     * Read a line from STDOUT.
     *
     * If an error occurs, returns false.
     *
     * @return string|false
     */
    public function read();

    /**
     * Write a line to STDIN.
     *
     * Returns the number of bytes written, or FALSE on error.
     *
     * @param string $line
     * @return int|false
     */
    public function write($line);

    /**
     * Get the output from STDOUT when the process is finished.
     *
     * If an error occurs, returns false.
     *
     * @return string|false
     */
    public function getOutput();

    /**
     * Get the error output from STDERR when the process is finished.
     *
     * If an error occurs, returns false.
     *
     * @return string|false
     */
    public function getErrorOutput();

    /**
     * Determine if the process is currently running.
     *
     * @return bool true if the process is currently running, false otherwise.
     */
    public function isRunning();

    /**
     * Get the exit code returned by the process.
     *
     * @return null|int The exit status code, null if the Process is not terminated.
     */
    public function getExitCode();

    /**
     * Determine if the process ended successfully.
     *
     * @return bool true if the process ended successfully, false otherwise.
     */
    public function isSuccessful();
}


text:
package me.solby.xtool.security;

import org.junit.jupiter.api.Test;

/**
 * me.solby.xtool.security
 *
 * @author majhdk
 * @date 2019/11/14
 */
class HMACUtilTest {

    @Test
    void hmac256Base64() {
        String key = "12key35nana";
        String plain = "{\"data\": \"oom\"}";

        System.out.println("Hex===============================================");

        System.out.println(HMACUtil.Signature.HMAC_SHA256.signature(key, plain));
        System.out.println(HMACUtil.Signature.HMAC_SHA1.signature(key, plain));
        System.out.println(HMACUtil.Signature.HMAC_MD5.signature(key, plain));

        System.out.println("Base64===============================================");

        System.out.println(HMACUtil.Signature.HMAC_SHA256.signatureBase64(key, plain));
        System.out.println(HMACUtil.Signature.HMAC_SHA1.signatureBase64(key, plain));
        System.out.println(HMACUtil.Signature.HMAC_MD5.signatureBase64(key, plain));
    }
}


text:
@interface MRCSelectBranchOrTagViewController ()

@property (nonatomic, strong, readonly) MRCSelectBranchOrTagViewModel *viewModel;

@end

@implementation MRCSelectBranchOrTagViewController

@dynamic viewModel;

- (void)viewDidLoad {
    [super viewDidLoad];

    UIBarButtonItem *leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:nil action:NULL];
    @weakify(self)
    leftBarButtonItem.rac_command = [[RACCommand alloc] initWithSignalBlock:^(id input) {
        @strongify(self)
        [self.viewModel.services dismissViewModelAnimated:YES completion:NULL];
        return [RACSignal empty];
    }];
    self.navigationItem.leftBarButtonItem = leftBarButtonItem;

    self.tableView.tintColor = HexRGB(colorI3);
}

#pragma mark - UITableViewDataSource

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"UITableViewCell" forIndexPath:indexPath];

    NSDictionary *dictionary = self.viewModel.dataSource[indexPath.section][indexPath.row];
    cell.imageView.image = [UIImage octicon_imageWithIdentifier:dictionary[@"identifier"] size:MRC_LEFT_IMAGE_SIZE];
    cell.textLabel.text  = dictionary[@"name"];

    if ([[dictionary[@"reference"] name] isEqualToString:self.viewModel.selectedReference.name]) {
        cell.accessoryType = UITableViewCellAccessoryCheckmark;
    } else {
        cell.accessoryType = UITableViewCellAccessoryNone;
    }

    return cell;
}

@end


text:
from hardware.hardware import Hardware
from networks.mq import MQ
from scheduler.scheduler import Scheduler
from dispatcher.dispatcher import Dispatcher
from configuration.load import load_config
from runner.run import run

config = load_config('./config.cfg')

run(
    config=config,
    Hardware=Hardware,
    Network=MQ,
    Dispatcher=Dispatcher,
    Scheduler=Scheduler
)


text:
package com.totalchange.bunman.ui.swing;

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

import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.TableModel;

import com.totalchange.bunman.Song;

class SongTableModel implements TableModel {
    private static final int COL_ARTIST = 0;
    private static final int COL_ALBUM = 1;
    private static final int COL_TRACK = 2;
    private static final int COL_TITLE = 3;

    private static final Class<?>[] COLUMN_TYPES = new Class[] { String.class,
            String.class, Integer.class, String.class };

    protected List<Song> songs;
    private List<TableModelListener> listeners = new ArrayList<TableModelListener>();

    SongTableModel() {
        this.songs = new ArrayList<Song>();
    }

    SongTableModel(List<Song> songs) {
        this.songs = songs;
    }

    public int getRowCount() {
        return songs.size();
    }

    public int getColumnCount() {
        return COLUMN_TYPES.length;
    }

    public String getColumnName(int columnIndex) {
        switch (columnIndex) {
        case COL_ARTIST:
            return Messages.getString("SongTableModel.columnName.artist");
        case COL_ALBUM:
            return Messages.getString("SongTableModel.columnName.album");
        case COL_TRACK:
            return Messages.getString("SongTableModel.columnName.track");
        case COL_TITLE:
            return Messages.getString("SongTableModel.columnName.title");
        default:
            return "???";
        }
    }

    public Class<?> getColumnClass(int columnIndex) {
        return COLUMN_TYPES[columnIndex];
    }

    public boolean isCellEditable(int rowIndex, int columnIndex) {
        return false;
    }

    public Object getValueAt(int rowIndex, int columnIndex) {
        switch (columnIndex) {
        case COL_ARTIST:
            return songs.get(rowIndex).getArtist();
        case COL_ALBUM:
            return songs.get(rowIndex).getAlbum();
        case COL_TRACK:
            return songs.get(rowIndex).getTrack();
        case COL_TITLE:
            return songs.get(rowIndex).getTitle();
        default:
            return "???";
        }
    }

    public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
        // Not implemented
    }

    public void addTableModelListener(TableModelListener l) {
        listeners.add(l);
    }

    public void removeTableModelListener(TableModelListener l) {
        listeners.remove(l);
    }

    void addSong(Song song) {
        songs.add(song);
        TableModelEvent ev = new TableModelEvent(this, songs.size() - 1,
                songs.size() - 1, TableModelEvent.ALL_COLUMNS,
                TableModelEvent.INSERT);
        for (TableModelListener listener : listeners) {
            listener.tableChanged(ev);
        }
    }
}


text:
<!DOCTYPE html>
<meta charset=utf-8>
<title>Redirecting...</title>
<link rel=canonical href="../督/index.html">
<meta http-equiv=refresh content="0; url='../督/index.html'">

Redirecting...

Click here if you are not redirected.


text:
@import "header.css";

#dropdown-search-tools, #dropdown-my-account, #create-relevancy {
	display: none;
}


text:
// =================================================================================================
// Copyright 2011 Twitter, Inc.
// -------------------------------------------------------------------------------------------------
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this work except in compliance with the License.
// You may obtain a copy of the License in the LICENSE file, or at:
//
//  https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// =================================================================================================
package com.linecorp.armeria.common.thrift.text;

import static net.javacrumbs.jsonunit.core.Option.IGNORING_ARRAY_ORDER;
import static net.javacrumbs.jsonunit.fluent.JsonFluentAssert.assertThatJson;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.EnumSet;
import java.util.regex.Pattern;

import org.apache.commons.codec.binary.Base64;
import org.apache.thrift.TApplicationException;
import org.apache.thrift.TException;
import org.apache.thrift.protocol.TMessage;
import org.apache.thrift.protocol.TMessageType;
import org.apache.thrift.transport.TIOStreamTransport;
import org.apache.thrift.transport.TTransportException;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

import com.google.common.base.Charsets;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.common.io.Resources;

import com.linecorp.armeria.common.thrift.text.RpcDebugService.doDebug_args;
import com.linecorp.armeria.common.thrift.text.RpcDebugService.doDebug_result;
import com.linecorp.armeria.internal.common.thrift.TApplicationExceptions;

/**
 * Tests the TTextProtocol.
 *
 * <p>TODO(Alex Roetter): add more tests, especially ones that verify
 * that we generate ParseErrors for invalid input
 *
 * @author Alex Roetter
 */
class TTextProtocolTest {

    private static final Pattern CR_PATTERN = Pattern.compile("(\\\\)+r");

    private String testData;
    private String namedEnumSerialized;
    private Base64 base64Encoder;

    /**
     * Load a file containing a serialized thrift message in from disk.
     */
    @BeforeEach
    void setUp() throws IOException {
        testData = readFile("TTextProtocol_TestData.txt");
        namedEnumSerialized = readFile("TTextProtocol_NamedEnum_Serialized.txt");
        base64Encoder = new Base64();
    }

    /**
     * Read in (deserialize) a thrift message in TTextProtocol format
     * from a file on disk, then serialize it back out to a string.
     * Finally, deserialize that string and compare to the original
     * message.
     */
    @Test
    void tTextProtocolReadWriteTest() throws Exception {
        // Deserialize the file contents into a thrift message.
        final ByteArrayInputStream bais1 = new ByteArrayInputStream(testData.getBytes());
        final TTextProtocolTestMsg msg1 = new TTextProtocolTestMsg();
        msg1.read(new TTextProtocol(new TIOStreamTransport(bais1)));

        assertThat(msg1).isEqualTo(testMsg());

        // Serialize that thrift message out to a byte array
        final ByteArrayOutputStream baos = new ByteArrayOutputStream();
        msg1.write(new TTextProtocol(new TIOStreamTransport(baos)));
        final byte[] bytes = baos.toByteArray();

        // Deserialize that string back to a thrift message.
        final ByteArrayInputStream bais2 = new ByteArrayInputStream(bytes);
        final TTextProtocolTestMsg msg2 = new TTextProtocolTestMsg();
        msg2.read(new TTextProtocol(new TIOStreamTransport(bais2)));

        assertThat(msg2).isEqualTo(msg1);
    }

    @Test
    void tTextNamedEnumProtocolReadWriteTest() throws Exception {
        // Deserialize the file contents into a thrift message.
        final ByteArrayInputStream bais1 = new ByteArrayInputStream(testData.getBytes());
        final TTextProtocolTestMsg msg1 = new TTextProtocolTestMsg();
        msg1.read(new TTextProtocol(new TIOStreamTransport(bais1), true));

        assertThat(msg1).isEqualTo(testMsg());

        // Serialize that thrift message out to a byte array
        final ByteArrayOutputStream baos = new ByteArrayOutputStream();
        msg1.write(new TTextProtocol(new TIOStreamTransport(baos), true));
        final byte[] bytes = baos.toByteArray();

        assertThatJson(CR_PATTERN.matcher(baos.toString()).replaceAll(""))
                .when(IGNORING_ARRAY_ORDER)
                .isEqualTo(namedEnumSerialized);

        // Deserialize that string back to a thrift message.
        final ByteArrayInputStream bais2 = new ByteArrayInputStream(bytes);
        final TTextProtocolTestMsg msg2 = new TTextProtocolTestMsg();
        msg2.read(new TTextProtocol(new TIOStreamTransport(bais2), true));

        assertThat(msg2).isEqualTo(msg1);
    }

    private TTextProtocolTestMsg testMsg() {
        return new TTextProtocolTestMsg()
                .setA(12345L)
                .setB(5)
                .setC(sub(1, 10))
                .setD(ImmutableList.of(7, 8, 9, 10, 11))
                .setE(ImmutableList.of(
                        sub(2, 100),
                        sub(3, 200),
                        sub(4, 300)
                ))
                .setF(true)
                .setG((byte) 12)
                .setH(ImmutableMap.of(
                        1, 2L,
                        3, 4L,
                        5, 6L
                ))
                .setJ(ImmutableMap.of(
                        (short) 1, ImmutableList.of(true, true, false, true),
                        (short) 5, ImmutableList.of(false)
                ))
                .setK(ImmutableSet.of(true, false, false, false, true))
                .setL(base64Encoder.decode("SGVsbG8gV29ybGQ="))
                .setM("hello \"spherical\" world!")
                .setN((short) 678)
                .setP(Letter.CHARLIE)
                .setQ(EnumSet.allOf(Letter.class))
                .setR(ImmutableMap.of(sub(1, 2), 100L))
                .setS(ImmutableMap.of(
                        ImmutableMap.of(
                                ImmutableMap.of(200L, 400L), 300L
                        ), 100L
                ))
                .setT(ImmutableList.of(Letter.ALPHA, Letter.ALPHA, Letter.CHARLIE, Letter.ALPHA, Letter.CHARLIE,
                                       Letter.ECHO))
                .setU(ImmutableMap.of("foo", Letter.ALPHA, "bar", Letter.DELTA))
                .setV(Letter.BETA)
                .setW(TestUnion.f2(4))
                .setX(ImmutableList.of(TestUnion.f2(5), TestUnion.f1(base64Encoder.decode("SGVsbG8gV29ybGQ="))))
                .setY(Letter.ALPHA)
                .setAa(ImmutableMap.of(Letter.ALPHA, 2, Letter.BETA, 4))
                .setAb(ImmutableMap.of(Letter.CHARLIE, Number.ONE,
                                       Letter.DELTA, Number.THREE,
                                       Letter.BETA, Number.FIVE))
                .setAc(ImmutableMap.of(
                        ImmutableMap.of(Number.ONE, 3),
                        ImmutableMap.of(new NumberSub(Number.TWO),
                                        ImmutableMap.of("ECHO", ImmutableList.of(Letter.ECHO, Letter.ALPHA,
                                                                                Letter.ALPHA))),
                        ImmutableMap.of(Number.THREE, 5),
                        ImmutableMap.of(new NumberSub(Number.FOUR),
                                        ImmutableMap.of("ALPHA", ImmutableList.of(Letter.BETA, Letter.DELTA)))
                ));
    }

    private static Sub sub(int s, int x) {
        return new Sub(s, new SubSub(x));
    }

    @Test
    void rpcCall() throws Exception {
        final String request =
                "{\n" +
                "  \"method\" : \"doDebug\",\n" +
                "  \"type\" : \"CALL\",\n" +
                "  \"seqid\" : 1,\n" +
                "  \"args\" : {\n" +
                "    \"methodArg1\" : \"foo1\",\n" +
                "    \"methodArg2\" : 200,\n" +
                "    \"details\" : {\n" +
                "      \"detailsArg1\" : \"foo2\",\n" +
                "      \"detailsArg2\" : 100\n" +
                "    }\n" +
                "  }\n" +
                '}';

        TTextProtocol prot = new TTextProtocol(
                new TIOStreamTransport(new ByteArrayInputStream(request.getBytes())));
        final TMessage header = prot.readMessageBegin();
        final doDebug_args args = new RpcDebugService.Processor.doDebug().getEmptyArgsInstance();
        args.read(prot);
        prot.readMessageEnd();

        assertThat(header.name).isEqualTo("doDebug");
        assertThat(header.type).isEqualTo(TMessageType.CALL);
        assertThat(header.seqid).isOne();

        assertThat(args.getMethodArg1()).isEqualTo("foo1");
        assertThat(args.getMethodArg2()).isEqualTo(200);
        assertThat(args.getDetails().getDetailsArg1()).isEqualTo("foo2");
        assertThat(args.getDetails().getDetailsArg2()).isEqualTo(100);

        final ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        prot = new TTextProtocol(new TIOStreamTransport(outputStream));
        prot.writeMessageBegin(header);
        args.write(prot);
        prot.writeMessageEnd();

        assertThatJson(new String(outputStream.toByteArray(), StandardCharsets.UTF_8)).isEqualTo(request);
    }

    @Test
    void rpcCall_noSeqId() throws Exception {
        final String request =
                "{\n" +
                "  \"method\" : \"doDebug\",\n" +
                "  \"type\" : \"CALL\",\n" +
                "  \"args\" : {\n" +
                "    \"methodArg1\" : \"foo1\",\n" +
                "    \"methodArg2\" : 200,\n" +
                "    \"details\" : {\n" +
                "      \"detailsArg1\" : \"foo2\",\n" +
                "      \"detailsArg2\" : 100\n" +
                "    }\n" +
                "  }\n" +
                '}';

        final TTextProtocol prot = new TTextProtocol(
                new TIOStreamTransport(new ByteArrayInputStream(request.getBytes())));
        final TMessage header = prot.readMessageBegin();
        final doDebug_args args = new RpcDebugService.Processor.doDebug().getEmptyArgsInstance();
        args.read(prot);
        prot.readMessageEnd();

        assertThat(header.name).isEqualTo("doDebug");
        assertThat(header.type).isEqualTo(TMessageType.CALL);
        assertThat(header.seqid).isZero();
    }

    @Test
    void rpcCall_oneWay() throws Exception {
        final String request =
                "{\n" +
                "  \"method\" : \"doDebug\",\n" +
                "  \"type\" : \"ONEWAY\",\n" +
                "  \"seqid\" : 1,\n" +
                "  \"args\" : {\n" +
                "    \"methodArg1\" : \"foo1\",\n" +
                "    \"methodArg2\" : 200,\n" +
                "    \"details\" : {\n" +
                "      \"detailsArg1\" : \"foo2\",\n" +
                "      \"detailsArg2\" : 100\n" +
                "    }\n" +
                "  }\n" +
                '}';

        TTextProtocol prot = new TTextProtocol(
                new TIOStreamTransport(new ByteArrayInputStream(request.getBytes())));
        final TMessage header = prot.readMessageBegin();
        final doDebug_args args = new RpcDebugService.Processor.doDebug().getEmptyArgsInstance();
        args.read(prot);
        prot.readMessageEnd();

        assertThat(header.name).isEqualTo("doDebug");
        assertThat(header.type).isEqualTo(TMessageType.ONEWAY);
        assertThat(header.seqid).isEqualTo(1);

        assertThat(args.getMethodArg1()).isEqualTo("foo1");
        assertThat(args.getMethodArg2()).isEqualTo(200);
        assertThat(args.getDetails().getDetailsArg1()).isEqualTo("foo2");
        assertThat(args.getDetails().getDetailsArg2()).isEqualTo(100);

        final ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        prot = new TTextProtocol(new TIOStreamTransport(outputStream));
        prot.writeMessageBegin(header);
        args.write(prot);
        prot.writeMessageEnd();

        assertThatJson(new String(outputStream.toByteArray(), StandardCharsets.UTF_8)).isEqualTo(request);
    }

    @Test
    void rpcReply() throws Exception {
        final String request =
                "{\n" +
                "  \"method\" : \"doDebug\",\n" +
                "  \"type\" : \"REPLY\",\n" +
                "  \"seqid\" : 100,\n" +
                "  \"args\" : {\n" +
                "    \"success\" : {\n" +
                "      \"response\" : \"Nice response\"\n" +
                "    }\n" +
                "  }\n" +
                '}';

        TTextProtocol prot = new TTextProtocol(
                new TIOStreamTransport(new ByteArrayInputStream(request.getBytes())));
        final TMessage header = prot.readMessageBegin();
        final doDebug_result result = new doDebug_result();
        result.read(prot);
        prot.readMessageEnd();

        assertThat(header.name).isEqualTo("doDebug");
        assertThat(header.type).isEqualTo(TMessageType.REPLY);
        assertThat(header.seqid).isEqualTo(100);

        assertThat(result.getSuccess().getResponse()).isEqualTo("Nice response");

        final ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        prot = new TTextProtocol(new TIOStreamTransport(outputStream));
        prot.writeMessageBegin(header);
        result.write(prot);
        prot.writeMessageEnd();

        assertThatJson(new String(outputStream.toByteArray(), StandardCharsets.UTF_8)).isEqualTo(request);
    }

    @Test
    void rpcException() throws Exception {
        final String request =
                "{\n" +
                "  \"method\" : \"doDebug\",\n" +
                "  \"type\" : \"EXCEPTION\",\n" +
                "  \"seqid\" : 101,\n" +
                "  \"args\" : {\n" +
                "    \"e\" : {\n" +
                "      \"reason\" : \"Bad rpc\"\n" +
                "    }\n" +
                "  }\n" +
                '}';

        TTextProtocol prot = new TTextProtocol(
                new TIOStreamTransport(new ByteArrayInputStream(request.getBytes())));
        final TMessage header = prot.readMessageBegin();
        final doDebug_result result = new doDebug_result();
        result.read(prot);
        prot.readMessageEnd();

        assertThat(header.name).isEqualTo("doDebug");
        assertThat(header.type).isEqualTo(TMessageType.EXCEPTION);
        assertThat(header.seqid).isEqualTo(101);

        assertThat(result.getE().getReason()).isEqualTo("Bad rpc");

        final ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        prot = new TTextProtocol(new TIOStreamTransport(outputStream));
        prot.writeMessageBegin(header);
        result.write(prot);
        prot.writeMessageEnd();

        assertThatJson(new String(outputStream.toByteArray(), StandardCharsets.UTF_8)).isEqualTo(request);
    }

    @Test
    void rpcTApplicationException() throws Exception {
        final String request =
                "{\n" +
                "  \"method\" : \"doDebug\",\n" +
                "  \"type\" : \"EXCEPTION\",\n" +
                "  \"seqid\" : 101,\n" +
                "  \"args\" : {\n" +
                "    \"type\" : 4,\n" +
                "    \"message\" : \"bad_seq_id\"\n" +
                "    }\n" +
                "  }\n" +
                '}';

        TTextProtocol prot = new TTextProtocol(
                new TIOStreamTransport(new ByteArrayInputStream(request.getBytes())));
        final TMessage header = prot.readMessageBegin();
        final TApplicationException result = TApplicationExceptions.read(prot);
        prot.readMessageEnd();

        assertThat(header.name).isEqualTo("doDebug");
        assertThat(header.type).isEqualTo(TMessageType.EXCEPTION);
        assertThat(header.seqid).isEqualTo(101);

        assertThat(result.getType()).isEqualTo(TApplicationException.BAD_SEQUENCE_ID);

        final ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        prot = new TTextProtocol(new TIOStreamTransport(outputStream));
        prot.writeMessageBegin(header);
        new TApplicationException(TApplicationException.BAD_SEQUENCE_ID, "bad_seq_id").write(prot);
        prot.writeMessageEnd();

        assertThatJson(new String(outputStream.toByteArray(), StandardCharsets.UTF_8)).isEqualTo(request);
    }

    @Test
    void rpcNoMethod() throws TTransportException {
        final String request =
                "{\n" +
                "  \"type\" : \"CALL\",\n" +
                "  \"args\" : {\n" +
                "    \"methodArg1\" : \"foo1\",\n" +
                "    \"methodArg2\" : 200,\n" +
                "    \"details\" : {\n" +
                "      \"detailsArg1\" : \"foo2\",\n" +
                "      \"detailsArg2\" : 100\n" +
                "    }\n" +
                "  }\n" +
                '}';
        final TTextProtocol prot = new TTextProtocol(
                new TIOStreamTransport(new ByteArrayInputStream(request.getBytes())));
        assertThatThrownBy(prot::readMessageBegin).isInstanceOf(TException.class);
    }

    @Test
    void rpcNoType() throws TTransportException {
        final String request =
                "{\n" +
                "  \"method\" : \"doDebug\",\n" +
                "  \"args\" : {\n" +
                "    \"methodArg1\" : \"foo1\",\n" +
                "    \"methodArg2\" : 200,\n" +
                "    \"details\" : {\n" +
                "      \"detailsArg1\" : \"foo2\",\n" +
                "      \"detailsArg2\" : 100\n" +
                "    }\n" +
                "  }\n" +
                '}';
        final TTextProtocol prot = new TTextProtocol(
                new TIOStreamTransport(new ByteArrayInputStream(request.getBytes())));
        assertThatThrownBy(prot::readMessageBegin).isInstanceOf(TException.class);
    }

    @Test
    void noRpcArgs() throws TTransportException {
        final String request =
                "{\n" +
                "  \"method\" : \"doDebug\"\n" +
                "  \"type\" : \"CALL\",\n" +
                '}';
        final TTextProtocol prot = new TTextProtocol(
                new TIOStreamTransport(new ByteArrayInputStream(request.getBytes())));
        assertThatThrownBy(prot::readMessageBegin).isInstanceOf(TException.class);
    }

    @Test
    void rpcArgsNotObject() throws TTransportException {
        final String request =
                "{\n" +
                "  \"method\" : \"doDebug\",\n" +
                "  \"args\" : 100\n" +
                '}';
        final TTextProtocol prot = new TTextProtocol(
                new TIOStreamTransport(new ByteArrayInputStream(request.getBytes())));
        assertThatThrownBy(prot::readMessageBegin).isInstanceOf(TException.class);
    }

    private static String readFile(String filename) throws IOException {
        return Resources.toString(
                Resources.getResource(
                        TTextProtocolTest.class,
                        "/com/linecorp/armeria/common/thrift/text/" + filename),
                Charsets.UTF_8
        );
    }
}


text:
Extending HILTI
===============

.. todo:: Note that this text isn't up to date anymore.

Adding Instructions [Missing]
-----------------------------

You need to make the instruction known to HILTI
``hilti/instructions/`` and add code-generation in ``hilti/codegen/``.

Here're the steps:

    * If your new instruction starts a new semantical group (like all
      instructions associated with a specific type), create a new file
      ``<group>.h`` in ``hilti/instructions/``, and add the file to
      the ``instructions`` variable in
      ``hilti/instructions/CMakeList.txt``.

      Also add a comment header describing the group. For types, add
      blocks ``\type`` with the type's name, followed by a general
      description; ``\ctor <example>`` with examples of creating
      instance of the type if it has constants or ctors; and
      ``\cproto`` with the C type it will be mapped to. The easiest is
      to copy a template from an existing type.

      Also add new file to the code generator in
      ``codegen/instructions``, and make it know to the build system
      by editing ``codegen/instructions/CMakeList.txt``.

    * To define the instruction, add an ``iBegin``/``iEnd`` block to
      the corresponding file in ``hilti/instructions/``:

        - TODO.

    * To implement code generation, add a ``visit()`` method to the
      corresponding group in ``codegen/instructions/``.

Adding Types [Partially Missing]
--------------------------------

You need to extend the AST infrastructure and the code generator.

Extending the AST
~~~~~~~~~~~~~~~~~

The basic steps to add a new type to HILTI's AST infrastructure:

    * Derive a new class from the appropiate base class in
      :hltc:`type.h`. For composite types, make sure to call
      :hltc:`addChild` for each sub-node.

    * Add a :hltc:`visit` method for the new type to
      :hltc:`VisitorInterface` in :hltc:`visitor.h`.

    * Create a new namespace ``your-type`` in ``builder.h`` and add at
      least a ``type(...)`` function that creates an instance of the
      new type.

    * To extend the parser to support your new type, add a rule for
      your new type to ``type`` in in ``parser/parser.yy``. You'll
      likely also need extend to adapt the lexer in
      ``parser/scanner.yy``.

    * Extend the printer in ``passes/printer.{h,cc}`` with a method
      ``visit()`` method for your type that prints it out in a syntax
      that the extendend parser can understand.

    * If expressions of your type need to implicitly coerce to other
      types, add a ``visit(()`` method to ``Coercer`` in
      ``coercer.h``.

If your type is a ``ValueType`` and you want to support constants:

    * Add a new class to ``constant.h``. For composite types, make
      sure to call ``Node::addChild`` for each sub-node.

    * Add a ``visit()`` method for the new constant to
      ``VisitorInterface`` in ``visitor.h``.

    * In ``builder.h``, add a ``your-type::create(...)`` function
      that returns a new ``expression::Constant``.

    * In ``parser/parser.yy``, add a rule to ``constant``.

    * Extend the printer in ``passes/printer.{h,cc}`` with a method
      ``visit()`` method for your constant that prints it out in a
      syntax that the extendend parser can understand.

    * If your constants need to support implicit coercion to other
      types, add a ``visit()`` method to ``ConstantCoercer`` in
      ``constant-coercer.h``.

      Generally, the cases where constants coerce to other types
      should be aligned with what's happening for non-constant
      expressios (as defined in by ``Coercer``). In some case,
      however, it can make sense to support additional cases for
      constants.

      Note that if for a type, the ``Coercer`` supports coercion to a
      target type while ``ConstantCoercer`` does not, the code
      generator will still coerce via the former (yet potentially less
      efficiently because it can't optimize for the constant case).

If your type is a ``HeapType`` and you want to support ctor
expressions:

    * XXX Similar to above.

Extending the Code Generator
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The basic steps to add a new type to the LLVM code generator:

    * Add a ``visit`` method to ``TypeBuilder`` in
      ``codegen/type-builder.h``. This method needs to return a filled
      out ``codegen::TypeInfo`` structure.

    * If you support constants, add a ``visit`` method to
      ``codegen::Loader`` in ``codegen/loader.h``.


text:
<?php

namespace Magento\SalesRule\Model\Coupon;

/**
 * SalesRule Mass Coupon Generator
 *
 * @method \Magento\SalesRule\Model\Resource\Coupon getResource()
 *
 * @author      Magento Core Team <core@magentocommerce.com>
 */
class Massgenerator extends \Magento\Framework\Model\AbstractModel implements
    \Magento\SalesRule\Model\Coupon\CodegeneratorInterface
{
    /**
     * Maximum probability of guessing the coupon on the first attempt
     */
    const MAX_PROBABILITY_OF_GUESSING = 0.25;

    /**
     * Number of attempts to generate
     */
    const MAX_GENERATE_ATTEMPTS = 10;

    /**
     * Count of generated Coupons
     * @var int
     */
    protected $generatedCount = 0;

    /**
     * Sales rule coupon
     *
     * @var \Magento\SalesRule\Helper\Coupon
     */
    protected $salesRuleCoupon;

    /**
     * @var \Magento\Framework\Stdlib\DateTime\DateTime
     */
    protected $date;

    /**
     * @var \Magento\SalesRule\Model\CouponFactory
     */
    protected $couponFactory;

    /**
     * @var \Magento\Framework\Stdlib\DateTime
     */
    protected $dateTime;

    /**
     * @param \Magento\Framework\Model\Context $context
     * @param \Magento\Framework\Registry $registry
     * @param \Magento\SalesRule\Helper\Coupon $salesRuleCoupon
     * @param \Magento\SalesRule\Model\CouponFactory $couponFactory
     * @param \Magento\Framework\Stdlib\DateTime\DateTime $date
     * @param \Magento\Framework\Stdlib\DateTime $dateTime
     * @param \Magento\Framework\Model\Resource\AbstractResource $resource
     * @param \Magento\Framework\Data\Collection\Db $resourceCollection
     * @param array $data
     */
    public function __construct(
        \Magento\Framework\Model\Context $context,
        \Magento\Framework\Registry $registry,
        \Magento\SalesRule\Helper\Coupon $salesRuleCoupon,
        \Magento\SalesRule\Model\CouponFactory $couponFactory,
        \Magento\Framework\Stdlib\DateTime\DateTime $date,
        \Magento\Framework\Stdlib\DateTime $dateTime,
        \Magento\Framework\Model\Resource\AbstractResource $resource = null,
        \Magento\Framework\Data\Collection\Db $resourceCollection = null,
        array $data = []
    ) {
        $this->salesRuleCoupon = $salesRuleCoupon;
        $this->date = $date;
        $this->couponFactory = $couponFactory;
        $this->dateTime = $dateTime;
        parent::__construct($context, $registry, $resource, $resourceCollection, $data);
    }

    /**
     * Initialize resource
     *
     * @return void
     */
    protected function _construct()
    {
        $this->_init('Magento\SalesRule\Model\Resource\Coupon');
    }

    /**
     * Generate coupon code
     *
     * @return string
     */
    public function generateCode()
    {
        $format = $this->getFormat();
        if (empty($format)) {
            $format = \Magento\SalesRule\Helper\Coupon::COUPON_FORMAT_ALPHANUMERIC;
        }

        $splitChar = $this->getDelimiter();
        $charset = $this->salesRuleCoupon->getCharset($format);

        $code = '';
        $charsetSize = count($charset);
        $split = max(0, (int)$this->getDash());
        $length = max(1, (int)$this->getLength());
        for ($i = 0; $i < $length; ++$i) {
            $char = $charset[\Magento\Framework\Math\Random::getRandomNumber(0, $charsetSize - 1)];
            if (($split > 0) && (($i % $split) === 0) && ($i !== 0)) {
                $char = $splitChar . $char;
            }
            $code .= $char;
        }

        return $this->getPrefix() . $code . $this->getSuffix();
    }

    /**
     * Retrieve delimiter
     *
     * @return string
     */
    public function getDelimiter()
    {
        if ($this->hasData('delimiter')) {
            return $this->getData('delimiter');
        } else {
            return $this->salesRuleCoupon->getCodeSeparator();
        }
    }

    /**
     * Generate Coupons Pool
     *
     * @throws \Magento\Framework\Model\Exception
     * @return $this
     */
    public function generatePool()
    {
        $this->generatedCount = 0;
        $size = $this->getQty();
        $maxAttempts = $this->getMaxAttempts() ? $this->getMaxAttempts() : self::MAX_GENERATE_ATTEMPTS;
        $this->increaseLength();
        /** @var $coupon \Magento\SalesRule\Model\Coupon */
        $coupon = $this->couponFactory->create();
        $nowTimestamp = $this->dateTime->formatDate($this->date->gmtTimestamp());

        for ($i = 0; $i < $size; $i++) {
            $attempt = 0;
            do {
                if ($attempt >= $maxAttempts) {
                    throw new \Magento\Framework\Model\Exception(
                        __('We cannot create the requested Coupon Qty. Please check your settings and try again.')
                    );
                }
                $code = $this->generateCode();
                ++$attempt;
            } while ($this->getResource()->exists($code));

            $expirationDate = $this->getToDate();
            if ($expirationDate instanceof \Zend_Date) {
                $expirationDate = $expirationDate->toString(
                    \Magento\Framework\Stdlib\DateTime::DATETIME_INTERNAL_FORMAT
                );
            }

            $coupon->setId(null)
                ->setRuleId($this->getRuleId())
                ->setUsageLimit($this->getUsesPerCoupon())
                ->setUsagePerCustomer($this->getUsesPerCustomer())
                ->setExpirationDate($expirationDate)
                ->setCreatedAt($nowTimestamp)
                ->setType(\Magento\SalesRule\Helper\Coupon::COUPON_TYPE_SPECIFIC_AUTOGENERATED)
                ->setCode($code)
                ->save();

            $this->generatedCount += 1;
        }

        return $this;
    }

    /**
     * Increase the length of Code if probability is low
     *
     * @return void
     */
    protected function increaseLength()
    {
        $maxProbability = $this->getMaxProbability() ? $this->getMaxProbability() : self::MAX_PROBABILITY_OF_GUESSING;
        $chars = count($this->salesRuleCoupon->getCharset($this->getFormat()));
        $size = $this->getQty();
        $length = (int)$this->getLength();
        $maxCodes = pow($chars, $length);
        $probability = $size / $maxCodes;

        if ($probability > $maxProbability) {
            do {
                $length++;
                $maxCodes = pow($chars, $length);
                $probability = $size / $maxCodes;
            } while ($probability > $maxProbability);
            $this->setLength($length);
        }
    }

    /**
     * Validate data input
     *
     * @param array $data
     * @return bool
     */
    public function validateData($data)
    {
        return !empty($data)
        && !empty($data['qty'])
        && !empty($data['rule_id'])
        && !empty($data['length'])
        && !empty($data['format'])
        && (int)$data['qty'] > 0
        && (int)$data['rule_id'] > 0
        && (int)$data['length'] > 0;
    }

    /**
     * Retrieve count of generated Coupons
     *
     * @return int
     */
    public function getGeneratedCount()
    {
        return $this->generatedCount;
    }
}


text:
package com.ouyeel.crawler.util.date;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 *
 * @Description 时间工具

 * @Author MaoC

 * @Since 2017年4月27日下午2:02:34

 *
 */
public class DateTools {

	private static SimpleDateFormat FORMAT_14 = new SimpleDateFormat("yyyyMMddHHmmss");
	private static SimpleDateFormat FORMAT_CRON_HM = new SimpleDateFormat("00 mm HH * * ?");
	private static SimpleDateFormat FORMAT_NORMAL = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

	/**
	 *
	 *
	 * @Description 获取当前时间14位String

	 * @Author MaoC

	 * @Since 2017年4月27日下午2:17:52

	 * @Parameter

	 */
	public static String getCurrentTime14String() {
		return FORMAT_14.format(new Date());
	}

	/**
	 *
	 *
	 * @Description 获取当天其实时间

	 * @Author MaoC

	 * @Since 2017年5月3日上午10:34:03

	 * @Parameter

	 */
	public static Date getIntraDayStratTime() {
		Calendar todayStart = Calendar.getInstance();
		todayStart.set(Calendar.HOUR, 0);
		todayStart.set(Calendar.MINUTE, 0);
		todayStart.set(Calendar.SECOND, 0);
		todayStart.set(Calendar.MILLISECOND, 0);
		return todayStart.getTime();
	}

	/**
	 *
	 *
	 * @Description 获取当天结束时间

	 * @Author MaoC

	 * @Since 2017年5月3日上午10:37:48

	 * @Parameter

	 */
	public static Date getIntraDayEndTime() {
		Calendar todayEnd = Calendar.getInstance();
		todayEnd.set(Calendar.HOUR, 23);
		todayEnd.set(Calendar.MINUTE, 59);
		todayEnd.set(Calendar.SECOND, 59);
		todayEnd.set(Calendar.MILLISECOND, 999);
		return todayEnd.getTime();
	}

	/**
	 *
	 *
	 * @Description 两分钟之后

	 * @Author MaoC

	 * @Since 2017年5月5日下午3:08:00

	 * @Parameter

	 */
	public static Date afterTwoMin() {
		Date afterTwoMin = new Date((new Date()).getTime() + 120000);
		return afterTwoMin;
	}

	/**
	 *
	 *
	 * @throws ParseException
	 * @Description 二十分钟前

	 * @Author MaoC

	 * @Since 2017年5月8日上午9:38:54

	 * @Parameter

	 */
	public static Date beforeTwentyMinAgo() throws ParseException {
		Calendar c = Calendar.getInstance();
		c.add(Calendar.MINUTE, -20);
		return c.getTime();
	}

	/**
	 *
	 *
	 * @Description 两分钟之后

	 * @Author MaoC

	 * @Since 2017年5月5日下午3:11:30

	 * @Parameter

	 */
	public static String afterTwoMinCron() {
		return FORMAT_CRON_HM.format(afterTwoMin());
	}
}


text:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using OfficialPlugins.GlueView;

namespace FlatRedBall.Glue.Plugins.ExportedImplementations.CommandInterfaces
{
    public class GlueViewCommands
    {
        public void SendRefreshVariablesCommand()
        {
            GlueViewPlugin.Self.RefreshVariables();
        }

        public void SendScript(string script)
        {
            GlueViewPlugin.Self.SendScript(script);
        }

        public void PrintOutput(string output)
        {

        }
    }
}


text:
ROOT_DIR := $(PWD)

SCRIPTS := $(ROOT_DIR)/scripts
STAMPS := $(ROOT_DIR)/.stamps

DOT_CONFIG := $(HOME)/.config
BIN := $(HOME)/bin

DIRS := $(HOME)/code $(HOME)/code/personal $(HOME)/code/work $(BIN) $(DOT_CONFIG) $(STAMPS) $(STAMPS)/scripts

DOTFILES := $(shell ls src)
PREDEF_DOTFILES := $(addprefix $(HOME)/.,$(DOTFILES))

BREW := /usr/local/bin/brew

BREW_TAPS := \
	github/homebrew-gh \
	goles/homebrew-battery \
	homebrew/homebrew-cask-fonts \
	teamookla/homebrew-speedtest

BREW_TAPS_PATH := /usr/local/Homebrew/Library/Taps
PREDEF_BREW_TAPS := $(addprefix $(BREW_TAPS_PATH)/,$(BREW_TAPS))

BREW_FORMULAS := \
	ack \
	azure-cli \
	bat \
	battery \
	cmake \
	cookiecutter \
	docker \
	docker-compose \
	docker-machine \
	fd \
	fzf \
	gh \
	git \
	git-flow-avh \
	git-standup \
	gnupg \
	gource \
	httpie \
	icu4c \
	jq \
	make \
	minikube \
	mysql-client \
	node \
	pkg-config \
	reattach-to-user-namespace \
	ripgrep \
	ruby \
	spark \
	speedtest \
	terraform \
	the_silver_searcher \
	tig \
	tmux \
	tmuxinator \
	tree \
	vaulted \
	vim \
	wget \
	write-good \
	yamllint \
	yq \
	zsh \
	zsh-completions \
	zsh-syntax-highlighting

BREW_FORMULAS_PATHS := $(addprefix /usr/local/Cellar/,$(BREW_FORMULAS))
UNIVERSAL_CTAGS := /usr/local/Homebrew/Library/Taps/universal-ctags/homebrew-universal-ctags
BREW_CASKS := \
	1password \
	avibrazil-rdm \
	fanny \
	firefox \
	font-inter \
	font-input \
	google-drive \
	google-chrome \
	iterm2 \
	keybase \
	slack \
	spotify \
	virtualbox

BREW_CASKS_PATHS := $(addprefix /usr/local/Caskroom/,$(BREW_CASKS))

SCRIPT_CONFIGS_STAMPS := $(patsubst %.sh,$(STAMPS)/%.stamp,$(wildcard scripts/*.sh))

GEMS := # \
	# github-linguist

PYENV_DIR := $(HOME)/.pyenv
PYENV := $(PYENV_DIR)/bin/pyenv
PYENV_VERSIONS := $(PYENV_DIR)/versions
PYTHON_2_MINOR := 2.7
PYTHON_3_MINOR := 3.9

PYTHON_2 := $(PYTHON_2_MINOR).17
PYTHON_3 := $(PYTHON_3_MINOR).0
GCP_SDK_PYTHON := 3.8.6

PYTHON_2_DIR := $(PYENV_VERSIONS)/$(PYTHON_2)
PYTHON_3_DIR := $(PYENV_VERSIONS)/$(PYTHON_3)
GCP_SDK_PYTHON_DIR := $(PYENV_VERSIONS)/$(GCP_SDK_PYTHON)

PYTHON_DIRS := $(PYTHON_2_DIR) $(PYTHON_3_DIR) $(GCP_SDK_PYTHON_DIR)

PYTHON_2_NEOVIM_LIB := $(PYENV_VERSIONS)/neovim2/lib/python$(PYTHON_2_MINOR)/site-packages/neovim
PYTHON_3_NEOVIM_LIB := $(PYENV_VERSIONS)/neovim3/lib/python$(PYTHON_3_MINOR)/site-packages/neovim

install: $(HOME)/code $(PREDEF_BREW_TAPS) $(BREW_FORMULAS_PATHS) $(UNIVERSAL_CTAGS) $(BREW_CASKS_PATHS) base16-shell /usr/local/Cellar/neovim $(PREDEF_DOTFILES) $(DOT_CONFIG)/nvim nvm xcode scripts $(HOME)/bin bash_profile google-cloud-sdk sdkman node script-config /Applications/Camera\ Settings.app $(PYENV) $(GEMS)

script-config: $(SCRIPT_CONFIGS_STAMPS)
$(STAMPS)/scripts/%.stamp: $(SCRIPTS)/%.sh |$(STAMPS)/scripts
	$<
	touch $@

brew: $(BREW)
$(BREW): |/Library/Developer/CommandLineTools
	/usr/bin/ruby -e "$$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

brew-update: |$(BREW)
	$(BREW) update

$(PREDEF_BREW_TAPS): |$(BREW)
	$(BREW) tap $(shell echo $@ | sed -e "s|$(BREW_TAPS_PATH)/\(.*\)/homebrew-\(.*\)|\1/\2|")

brew-install: |$(BREW_FORMULAS_PATHS) $(UNIVERSAL_CTAGS) $(BREW_CASKS_PATHS)

$(BREW_FORMULAS_PATHS): |$(BREW) $(PREDEF_BREW_TAPS)
	$(BREW) install $(patsubst .%,%,$(notdir $@))

$(UNIVERSAL_CTAGS):
	$(BREW) install --HEAD universal-ctags/universal-ctags/universal-ctags

$(BREW_CASKS_PATHS): |$(BREW)
	$(BREW) install $(patsubst .%,%,$(notdir $@))

gem-install: $(GEMS)
$(GEMS): |$(BREW_FORMULAS_PATHS)
	sudo gem install $@

dotfiles: |$(PREDEF_DOTFILES)
$(PREDEF_DOTFILES):
	ln -Fsv $(PWD)/src/$(patsubst .%,%,$(notdir $@)) $@

scripts: $(HOME)/scripts
$(HOME)/scripts:
	ln -Fsv $(PWD)/src/$(patsubst .%,%,$(notdir $@)) $@

bash_profile: $(HOME)/.bash_profile
$(HOME)/.bash_profile: |$(HOME)/.bash_profile_mac
	ln -Fsv $(HOME)/.bash_profile_mac $@

nvim-config: $(DOT_CONFIG)/nvim
$(DOT_CONFIG)/nvim: |$(DOT_CONFIG)
	ln -Fsv $(PWD)/src/$(patsubst .%,%,$(notdir $@)) $@

xcode: |/Library/Developer/CommandLineTools
/Library/Developer/CommandLineTools:
	xcode-select --install

$(PYENV_VERSIONS)/gcp-sdk: $(GCP_SDK_PYTHON_DIR) |$(PYENV)
	$(PYENV) virtualenv -f $(GCP_SDK_PYTHON) $(notdir $@)

google-cloud-sdk: |$(HOME)/.google-cloud-sdk
$(HOME)/.google-cloud-sdk: $(PYENV_VERSIONS)/gcp-sdk
	curl https://sdk.cloud.google.com > google-cloud-install.sh
	CLOUDSDK_PYTHON=`$(PYENV) prefix gcp-sdk`/bin/python bash google-cloud-install.sh --disable-prompts
	mv $(HOME)/google-cloud-sdk $(HOME)/.google-cloud-sdk
	rm google-cloud-install.sh

sdkman: |$(HOME)/.sdkman
$(HOME)/.sdkman:
	curl -s "https://get.sdkman.io" | bash

base16-shell: |$(HOME)/.config/base16-shell
$(HOME)/.config/base16-shell: |$(DOT_CONFIG)
	mkdir -p $@
	(set -e; \
	cd $@; \
	git init; \
	git remote add origin https://github.com/chriskempson/base16-shell.git; \
	git fetch origin; \
	git checkout -b master --track origin/master; \
	git reset origin/master)

# input-font: $(HOME)/Library/Fonts/Input_Fonts
# $(HOME)/Library/Fonts/Input_Fonts:
# 	mkdir -p $(dir $@)
# 	mkdir -p tmp
# 	curl "https://input.fontbureau.com/build/?fontSelection=whole&a=0&g=0&i=0&l=0&zero=0&asterisk=0&braces=0&preset=default&line-height=1.2&accept=I+do&email=" > tmp/Input-Font.zip
# 	unzip tmp/Input-Font.zip -d tmp
# 	mv tmp/Input_Fonts $(dir $@)
# 	rm -rf tmp

nvm: |$(HOME)/.nvm
$(HOME)/.nvm:
	curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.2/install.sh | bash
	source $(HOME)/.nvm/nvm.sh && nvm alias default system

node: |$(HOME)/.nvm/alias/default
$(HOME)/.nvm/alias/default: |$(HOME)/.nvm
	source $(HOME)/.nvm/nvm.sh && nvm alias default system

/usr/local/Cellar/neovim: $(PYTHON_2_NEOVIM_LIB) $(PYTHON_3_NEOVIM_LIB) | $(HOME)/.vimrc_background $(BREW)
	$(BREW) install neovim

pyenv: $(PYENV)
$(PYENV): /usr/bin/curl
	curl https://pyenv.run | bash

$(PYTHON_DIRS): |$(PYENV)
	$(PYENV) install $(notdir $@)

$(PYENV_VERSIONS)/neovim2: $(PYTHON_2_DIR) |$(PYENV)
	$(PYENV) virtualenv $(PYTHON_2) $(notdir $@)

$(PYENV_VERSIONS)/neovim3: $(PYTHON_3_DIR) |$(PYENV)
	$(PYENV) virtualenv $(PYTHON_3) $(notdir $@)

$(PYTHON_2_NEOVIM_LIB): $(PYENV_VERSIONS)/neovim2
	PATH="$(PYENV_VERSIONS)/neovim2/bin:$$PATH" pip install --upgrade pip
	PATH="$(PYENV_VERSIONS)/neovim2/bin:$$PATH" pip install neovim

$(PYTHON_3_NEOVIM_LIB): $(PYENV_VERSIONS)/neovim3
	PATH="$(PYENV_VERSIONS)/neovim3/bin:$$PATH" pip install --upgrade pip
	PATH="$(PYENV_VERSIONS)/neovim3/bin:$$PATH" pip install neovim

cammera-settings: /Applications/Camera\ Settings.app
/Applications/Camera\ Settings.app:
	curl https://download01.logi.com/web/ftp/pub/techsupport/cameras/Webcams/LogiCameraSettings_3.0.12.pkg -o LogiCameraSettings_3.0.12.pkg
	sudo installer -pkg LogiCameraSettings_3.0.12.pkg -target /
	rm LogiCameraSettings_3.0.12.pkg
	sudo chown ${USER}:staff "$@"
	chmod 755 "$@"

dirs: $(DIRS)
$(DIRS):
	mkdir -p $@

.PHONY: \
	base16-shell \
	brew \
	brew-install \
	brew-tap \
	brew-update \
	brew-update \
	dirs \
	dotfiles \
	input-font \
	install \
	neovim \
	node \
	nvim-config \
	nvm \
	script-config \
	xcode