text:
// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: google/cloud/datalabeling/v1beta1/evaluation.proto

package com.google.cloud.datalabeling.v1beta1;

/**
 *
 *
 *

 * Configuration details used for calculating evaluation metrics and creating an
 * [Evaluation][google.cloud.datalabeling.v1beta1.Evaluation].
 *

 *
 * Protobuf type {@code google.cloud.datalabeling.v1beta1.EvaluationConfig}
 */
public final class EvaluationConfig extends com.google.protobuf.GeneratedMessageV3
    implements
    // @@protoc_insertion_point(message_implements:google.cloud.datalabeling.v1beta1.EvaluationConfig)
    EvaluationConfigOrBuilder {
  private static final long serialVersionUID = 0L;
  // Use EvaluationConfig.newBuilder() to construct.
  private EvaluationConfig(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
    super(builder);
  }

  private EvaluationConfig() {}

  @java.lang.Override
  @SuppressWarnings({"unused"})
  protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
    return new EvaluationConfig();
  }

  @java.lang.Override
  public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
    return this.unknownFields;
  }

  public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
    return com.google.cloud.datalabeling.v1beta1.EvaluationOuterClass
        .internal_static_google_cloud_datalabeling_v1beta1_EvaluationConfig_descriptor;
  }

  @java.lang.Override
  protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internalGetFieldAccessorTable() {
    return com.google.cloud.datalabeling.v1beta1.EvaluationOuterClass
        .internal_static_google_cloud_datalabeling_v1beta1_EvaluationConfig_fieldAccessorTable
        .ensureFieldAccessorsInitialized(
            com.google.cloud.datalabeling.v1beta1.EvaluationConfig.class,
            com.google.cloud.datalabeling.v1beta1.EvaluationConfig.Builder.class);
  }

  private int verticalOptionCase_ = 0;
  private java.lang.Object verticalOption_;

  public enum VerticalOptionCase
      implements
          com.google.protobuf.Internal.EnumLite,
          com.google.protobuf.AbstractMessage.InternalOneOfEnum {
    BOUNDING_BOX_EVALUATION_OPTIONS(1),
    VERTICALOPTION_NOT_SET(0);
    private final int value;

    private VerticalOptionCase(int value) {
      this.value = value;
    }
    /**
     * @param value The number of the enum to look for.
     * @return The enum associated with the given number.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static VerticalOptionCase valueOf(int value) {
      return forNumber(value);
    }

    public static VerticalOptionCase forNumber(int value) {
      switch (value) {
        case 1:
          return BOUNDING_BOX_EVALUATION_OPTIONS;
        case 0:
          return VERTICALOPTION_NOT_SET;
        default:
          return null;
      }
    }

    public int getNumber() {
      return this.value;
    }
  };

  public VerticalOptionCase getVerticalOptionCase() {
    return VerticalOptionCase.forNumber(verticalOptionCase_);
  }

  public static final int BOUNDING_BOX_EVALUATION_OPTIONS_FIELD_NUMBER = 1;
  /**
   *
   *
   *

   * Only specify this field if the related model performs image object
   * detection (`IMAGE_BOUNDING_BOX_ANNOTATION`). Describes how to evaluate
   * bounding boxes.
   *

   *
   *
   * .google.cloud.datalabeling.v1beta1.BoundingBoxEvaluationOptions bounding_box_evaluation_options = 1;
   *
   *
   * @return Whether the boundingBoxEvaluationOptions field is set.
   */
  @java.lang.Override
  public boolean hasBoundingBoxEvaluationOptions() {
    return verticalOptionCase_ == 1;
  }
  /**
   *
   *
   *

   * Only specify this field if the related model performs image object
   * detection (`IMAGE_BOUNDING_BOX_ANNOTATION`). Describes how to evaluate
   * bounding boxes.
   *

   *
   *
   * .google.cloud.datalabeling.v1beta1.BoundingBoxEvaluationOptions bounding_box_evaluation_options = 1;
   *
   *
   * @return The boundingBoxEvaluationOptions.
   */
  @java.lang.Override
  public com.google.cloud.datalabeling.v1beta1.BoundingBoxEvaluationOptions
      getBoundingBoxEvaluationOptions() {
    if (verticalOptionCase_ == 1) {
      return (com.google.cloud.datalabeling.v1beta1.BoundingBoxEvaluationOptions) verticalOption_;
    }
    return com.google.cloud.datalabeling.v1beta1.BoundingBoxEvaluationOptions.getDefaultInstance();
  }
  /**
   *
   *
   *

   * Only specify this field if the related model performs image object
   * detection (`IMAGE_BOUNDING_BOX_ANNOTATION`). Describes how to evaluate
   * bounding boxes.
   *

   *
   *
   * .google.cloud.datalabeling.v1beta1.BoundingBoxEvaluationOptions bounding_box_evaluation_options = 1;
   *
   */
  @java.lang.Override
  public com.google.cloud.datalabeling.v1beta1.BoundingBoxEvaluationOptionsOrBuilder
      getBoundingBoxEvaluationOptionsOrBuilder() {
    if (verticalOptionCase_ == 1) {
      return (com.google.cloud.datalabeling.v1beta1.BoundingBoxEvaluationOptions) verticalOption_;
    }
    return com.google.cloud.datalabeling.v1beta1.BoundingBoxEvaluationOptions.getDefaultInstance();
  }

  private byte memoizedIsInitialized = -1;

  @java.lang.Override
  public final boolean isInitialized() {
    byte isInitialized = memoizedIsInitialized;
    if (isInitialized == 1) return true;
    if (isInitialized == 0) return false;

    memoizedIsInitialized = 1;
    return true;
  }

  @java.lang.Override
  public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
    if (verticalOptionCase_ == 1) {
      output.writeMessage(
          1, (com.google.cloud.datalabeling.v1beta1.BoundingBoxEvaluationOptions) verticalOption_);
    }
    getUnknownFields().writeTo(output);
  }

  @java.lang.Override
  public int getSerializedSize() {
    int size = memoizedSize;
    if (size != -1) return size;

    size = 0;
    if (verticalOptionCase_ == 1) {
      size +=
          com.google.protobuf.CodedOutputStream.computeMessageSize(
              1,
              (com.google.cloud.datalabeling.v1beta1.BoundingBoxEvaluationOptions) verticalOption_);
    }
    size += getUnknownFields().getSerializedSize();
    memoizedSize = size;
    return size;
  }

  @java.lang.Override
  public boolean equals(final java.lang.Object obj) {
    if (obj == this) {
      return true;
    }
    if (!(obj instanceof com.google.cloud.datalabeling.v1beta1.EvaluationConfig)) {
      return super.equals(obj);
    }
    com.google.cloud.datalabeling.v1beta1.EvaluationConfig other =
        (com.google.cloud.datalabeling.v1beta1.EvaluationConfig) obj;

    if (!getVerticalOptionCase().equals(other.getVerticalOptionCase())) return false;
    switch (verticalOptionCase_) {
      case 1:
        if (!getBoundingBoxEvaluationOptions().equals(other.getBoundingBoxEvaluationOptions()))
          return false;
        break;
      case 0:
      default:
    }
    if (!getUnknownFields().equals(other.getUnknownFields())) return false;
    return true;
  }

  @java.lang.Override
  public int hashCode() {
    if (memoizedHashCode != 0) {
      return memoizedHashCode;
    }
    int hash = 41;
    hash = (19 * hash) + getDescriptor().hashCode();
    switch (verticalOptionCase_) {
      case 1:
        hash = (37 * hash) + BOUNDING_BOX_EVALUATION_OPTIONS_FIELD_NUMBER;
        hash = (53 * hash) + getBoundingBoxEvaluationOptions().hashCode();
        break;
      case 0:
      default:
    }
    hash = (29 * hash) + getUnknownFields().hashCode();
    memoizedHashCode = hash;
    return hash;
  }

  public static com.google.cloud.datalabeling.v1beta1.EvaluationConfig parseFrom(
      java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }

  public static com.google.cloud.datalabeling.v1beta1.EvaluationConfig parseFrom(
      java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data, extensionRegistry);
  }

  public static com.google.cloud.datalabeling.v1beta1.EvaluationConfig parseFrom(
      com.google.protobuf.ByteString data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }

  public static com.google.cloud.datalabeling.v1beta1.EvaluationConfig parseFrom(
      com.google.protobuf.ByteString data,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data, extensionRegistry);
  }

  public static com.google.cloud.datalabeling.v1beta1.EvaluationConfig parseFrom(byte[] data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }

  public static com.google.cloud.datalabeling.v1beta1.EvaluationConfig parseFrom(
      byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data, extensionRegistry);
  }

  public static com.google.cloud.datalabeling.v1beta1.EvaluationConfig parseFrom(
      java.io.InputStream input) throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
  }

  public static com.google.cloud.datalabeling.v1beta1.EvaluationConfig parseFrom(
      java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
        PARSER, input, extensionRegistry);
  }

  public static com.google.cloud.datalabeling.v1beta1.EvaluationConfig parseDelimitedFrom(
      java.io.InputStream input) throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
  }

  public static com.google.cloud.datalabeling.v1beta1.EvaluationConfig parseDelimitedFrom(
      java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
        PARSER, input, extensionRegistry);
  }

  public static com.google.cloud.datalabeling.v1beta1.EvaluationConfig parseFrom(
      com.google.protobuf.CodedInputStream input) throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
  }

  public static com.google.cloud.datalabeling.v1beta1.EvaluationConfig parseFrom(
      com.google.protobuf.CodedInputStream input,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
        PARSER, input, extensionRegistry);
  }

  @java.lang.Override
  public Builder newBuilderForType() {
    return newBuilder();
  }

  public static Builder newBuilder() {
    return DEFAULT_INSTANCE.toBuilder();
  }

  public static Builder newBuilder(
      com.google.cloud.datalabeling.v1beta1.EvaluationConfig prototype) {
    return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
  }

  @java.lang.Override
  public Builder toBuilder() {
    return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
  }

  @java.lang.Override
  protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
    Builder builder = new Builder(parent);
    return builder;
  }
  /**
   *
   *
   *

   * Configuration details used for calculating evaluation metrics and creating an
   * [Evaluation][google.cloud.datalabeling.v1beta1.Evaluation].
   *

   *
   * Protobuf type {@code google.cloud.datalabeling.v1beta1.EvaluationConfig}
   */
  public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
      implements
      // @@protoc_insertion_point(builder_implements:google.cloud.datalabeling.v1beta1.EvaluationConfig)
      com.google.cloud.datalabeling.v1beta1.EvaluationConfigOrBuilder {
    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
      return com.google.cloud.datalabeling.v1beta1.EvaluationOuterClass
          .internal_static_google_cloud_datalabeling_v1beta1_EvaluationConfig_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.cloud.datalabeling.v1beta1.EvaluationOuterClass
          .internal_static_google_cloud_datalabeling_v1beta1_EvaluationConfig_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.datalabeling.v1beta1.EvaluationConfig.class,
              com.google.cloud.datalabeling.v1beta1.EvaluationConfig.Builder.class);
    }

    // Construct using com.google.cloud.datalabeling.v1beta1.EvaluationConfig.newBuilder()
    private Builder() {}

    private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      super(parent);
    }

    @java.lang.Override
    public Builder clear() {
      super.clear();
      if (boundingBoxEvaluationOptionsBuilder_ != null) {
        boundingBoxEvaluationOptionsBuilder_.clear();
      }
      verticalOptionCase_ = 0;
      verticalOption_ = null;
      return this;
    }

    @java.lang.Override
    public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
      return com.google.cloud.datalabeling.v1beta1.EvaluationOuterClass
          .internal_static_google_cloud_datalabeling_v1beta1_EvaluationConfig_descriptor;
    }

    @java.lang.Override
    public com.google.cloud.datalabeling.v1beta1.EvaluationConfig getDefaultInstanceForType() {
      return com.google.cloud.datalabeling.v1beta1.EvaluationConfig.getDefaultInstance();
    }

    @java.lang.Override
    public com.google.cloud.datalabeling.v1beta1.EvaluationConfig build() {
      com.google.cloud.datalabeling.v1beta1.EvaluationConfig result = buildPartial();
      if (!result.isInitialized()) {
        throw newUninitializedMessageException(result);
      }
      return result;
    }

    @java.lang.Override
    public com.google.cloud.datalabeling.v1beta1.EvaluationConfig buildPartial() {
      com.google.cloud.datalabeling.v1beta1.EvaluationConfig result =
          new com.google.cloud.datalabeling.v1beta1.EvaluationConfig(this);
      if (verticalOptionCase_ == 1) {
        if (boundingBoxEvaluationOptionsBuilder_ == null) {
          result.verticalOption_ = verticalOption_;
        } else {
          result.verticalOption_ = boundingBoxEvaluationOptionsBuilder_.build();
        }
      }
      result.verticalOptionCase_ = verticalOptionCase_;
      onBuilt();
      return result;
    }

    @java.lang.Override
    public Builder clone() {
      return super.clone();
    }

    @java.lang.Override
    public Builder setField(
        com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
      return super.setField(field, value);
    }

    @java.lang.Override
    public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
      return super.clearField(field);
    }

    @java.lang.Override
    public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
      return super.clearOneof(oneof);
    }

    @java.lang.Override
    public Builder setRepeatedField(
        com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) {
      return super.setRepeatedField(field, index, value);
    }

    @java.lang.Override
    public Builder addRepeatedField(
        com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
      return super.addRepeatedField(field, value);
    }

    @java.lang.Override
    public Builder mergeFrom(com.google.protobuf.Message other) {
      if (other instanceof com.google.cloud.datalabeling.v1beta1.EvaluationConfig) {
        return mergeFrom((com.google.cloud.datalabeling.v1beta1.EvaluationConfig) other);
      } else {
        super.mergeFrom(other);
        return this;
      }
    }

    public Builder mergeFrom(com.google.cloud.datalabeling.v1beta1.EvaluationConfig other) {
      if (other == com.google.cloud.datalabeling.v1beta1.EvaluationConfig.getDefaultInstance())
        return this;
      switch (other.getVerticalOptionCase()) {
        case BOUNDING_BOX_EVALUATION_OPTIONS:
          {
            mergeBoundingBoxEvaluationOptions(other.getBoundingBoxEvaluationOptions());
            break;
          }
        case VERTICALOPTION_NOT_SET:
          {
            break;
          }
      }
      this.mergeUnknownFields(other.getUnknownFields());
      onChanged();
      return this;
    }

    @java.lang.Override
    public final boolean isInitialized() {
      return true;
    }

    @java.lang.Override
    public Builder mergeFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10:
              {
                input.readMessage(
                    getBoundingBoxEvaluationOptionsFieldBuilder().getBuilder(), extensionRegistry);
                verticalOptionCase_ = 1;
                break;
              } // case 10
            default:
              {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
          } // switch (tag)
        } // while (!done)
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.unwrapIOException();
      } finally {
        onChanged();
      } // finally
      return this;
    }

    private int verticalOptionCase_ = 0;
    private java.lang.Object verticalOption_;

    public VerticalOptionCase getVerticalOptionCase() {
      return VerticalOptionCase.forNumber(verticalOptionCase_);
    }

    public Builder clearVerticalOption() {
      verticalOptionCase_ = 0;
      verticalOption_ = null;
      onChanged();
      return this;
    }

    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.cloud.datalabeling.v1beta1.BoundingBoxEvaluationOptions,
            com.google.cloud.datalabeling.v1beta1.BoundingBoxEvaluationOptions.Builder,
            com.google.cloud.datalabeling.v1beta1.BoundingBoxEvaluationOptionsOrBuilder>
        boundingBoxEvaluationOptionsBuilder_;
    /**
     *
     *
     *

     * Only specify this field if the related model performs image object
     * detection (`IMAGE_BOUNDING_BOX_ANNOTATION`). Describes how to evaluate
     * bounding boxes.
     *

     *
     *
     * .google.cloud.datalabeling.v1beta1.BoundingBoxEvaluationOptions bounding_box_evaluation_options = 1;
     *
     *
     * @return Whether the boundingBoxEvaluationOptions field is set.
     */
    @java.lang.Override
    public boolean hasBoundingBoxEvaluationOptions() {
      return verticalOptionCase_ == 1;
    }
    /**
     *
     *
     *

     * Only specify this field if the related model performs image object
     * detection (`IMAGE_BOUNDING_BOX_ANNOTATION`). Describes how to evaluate
     * bounding boxes.
     *

     *
     *
     * .google.cloud.datalabeling.v1beta1.BoundingBoxEvaluationOptions bounding_box_evaluation_options = 1;
     *
     *
     * @return The boundingBoxEvaluationOptions.
     */
    @java.lang.Override
    public com.google.cloud.datalabeling.v1beta1.BoundingBoxEvaluationOptions
        getBoundingBoxEvaluationOptions() {
      if (boundingBoxEvaluationOptionsBuilder_ == null) {
        if (verticalOptionCase_ == 1) {
          return (com.google.cloud.datalabeling.v1beta1.BoundingBoxEvaluationOptions)
              verticalOption_;
        }
        return com.google.cloud.datalabeling.v1beta1.BoundingBoxEvaluationOptions
            .getDefaultInstance();
      } else {
        if (verticalOptionCase_ == 1) {
          return boundingBoxEvaluationOptionsBuilder_.getMessage();
        }
        return com.google.cloud.datalabeling.v1beta1.BoundingBoxEvaluationOptions
            .getDefaultInstance();
      }
    }
    /**
     *
     *
     *

     * Only specify this field if the related model performs image object
     * detection (`IMAGE_BOUNDING_BOX_ANNOTATION`). Describes how to evaluate
     * bounding boxes.
     *

     *
     *
     * .google.cloud.datalabeling.v1beta1.BoundingBoxEvaluationOptions bounding_box_evaluation_options = 1;
     *
     */
    public Builder setBoundingBoxEvaluationOptions(
        com.google.cloud.datalabeling.v1beta1.BoundingBoxEvaluationOptions value) {
      if (boundingBoxEvaluationOptionsBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        verticalOption_ = value;
        onChanged();
      } else {
        boundingBoxEvaluationOptionsBuilder_.setMessage(value);
      }
      verticalOptionCase_ = 1;
      return this;
    }
    /**
     *
     *
     *

     * Only specify this field if the related model performs image object
     * detection (`IMAGE_BOUNDING_BOX_ANNOTATION`). Describes how to evaluate
     * bounding boxes.
     *

     *
     *
     * .google.cloud.datalabeling.v1beta1.BoundingBoxEvaluationOptions bounding_box_evaluation_options = 1;
     *
     */
    public Builder setBoundingBoxEvaluationOptions(
        com.google.cloud.datalabeling.v1beta1.BoundingBoxEvaluationOptions.Builder
            builderForValue) {
      if (boundingBoxEvaluationOptionsBuilder_ == null) {
        verticalOption_ = builderForValue.build();
        onChanged();
      } else {
        boundingBoxEvaluationOptionsBuilder_.setMessage(builderForValue.build());
      }
      verticalOptionCase_ = 1;
      return this;
    }
    /**
     *
     *
     *

     * Only specify this field if the related model performs image object
     * detection (`IMAGE_BOUNDING_BOX_ANNOTATION`). Describes how to evaluate
     * bounding boxes.
     *

     *
     *
     * .google.cloud.datalabeling.v1beta1.BoundingBoxEvaluationOptions bounding_box_evaluation_options = 1;
     *
     */
    public Builder mergeBoundingBoxEvaluationOptions(
        com.google.cloud.datalabeling.v1beta1.BoundingBoxEvaluationOptions value) {
      if (boundingBoxEvaluationOptionsBuilder_ == null) {
        if (verticalOptionCase_ == 1
            && verticalOption_
                != com.google.cloud.datalabeling.v1beta1.BoundingBoxEvaluationOptions
                    .getDefaultInstance()) {
          verticalOption_ =
              com.google.cloud.datalabeling.v1beta1.BoundingBoxEvaluationOptions.newBuilder(
                      (com.google.cloud.datalabeling.v1beta1.BoundingBoxEvaluationOptions)
                          verticalOption_)
                  .mergeFrom(value)
                  .buildPartial();
        } else {
          verticalOption_ = value;
        }
        onChanged();
      } else {
        if (verticalOptionCase_ == 1) {
          boundingBoxEvaluationOptionsBuilder_.mergeFrom(value);
        } else {
          boundingBoxEvaluationOptionsBuilder_.setMessage(value);
        }
      }
      verticalOptionCase_ = 1;
      return this;
    }
    /**
     *
     *
     *

     * Only specify this field if the related model performs image object
     * detection (`IMAGE_BOUNDING_BOX_ANNOTATION`). Describes how to evaluate
     * bounding boxes.
     *

     *
     *
     * .google.cloud.datalabeling.v1beta1.BoundingBoxEvaluationOptions bounding_box_evaluation_options = 1;
     *
     */
    public Builder clearBoundingBoxEvaluationOptions() {
      if (boundingBoxEvaluationOptionsBuilder_ == null) {
        if (verticalOptionCase_ == 1) {
          verticalOptionCase_ = 0;
          verticalOption_ = null;
          onChanged();
        }
      } else {
        if (verticalOptionCase_ == 1) {
          verticalOptionCase_ = 0;
          verticalOption_ = null;
        }
        boundingBoxEvaluationOptionsBuilder_.clear();
      }
      return this;
    }
    /**
     *
     *
     *

     * Only specify this field if the related model performs image object
     * detection (`IMAGE_BOUNDING_BOX_ANNOTATION`). Describes how to evaluate
     * bounding boxes.
     *

     *
     *
     * .google.cloud.datalabeling.v1beta1.BoundingBoxEvaluationOptions bounding_box_evaluation_options = 1;
     *
     */
    public com.google.cloud.datalabeling.v1beta1.BoundingBoxEvaluationOptions.Builder
        getBoundingBoxEvaluationOptionsBuilder() {
      return getBoundingBoxEvaluationOptionsFieldBuilder().getBuilder();
    }
    /**
     *
     *
     *

     * Only specify this field if the related model performs image object
     * detection (`IMAGE_BOUNDING_BOX_ANNOTATION`). Describes how to evaluate
     * bounding boxes.
     *

     *
     *
     * .google.cloud.datalabeling.v1beta1.BoundingBoxEvaluationOptions bounding_box_evaluation_options = 1;
     *
     */
    @java.lang.Override
    public com.google.cloud.datalabeling.v1beta1.BoundingBoxEvaluationOptionsOrBuilder
        getBoundingBoxEvaluationOptionsOrBuilder() {
      if ((verticalOptionCase_ == 1) && (boundingBoxEvaluationOptionsBuilder_ != null)) {
        return boundingBoxEvaluationOptionsBuilder_.getMessageOrBuilder();
      } else {
        if (verticalOptionCase_ == 1) {
          return (com.google.cloud.datalabeling.v1beta1.BoundingBoxEvaluationOptions)
              verticalOption_;
        }
        return com.google.cloud.datalabeling.v1beta1.BoundingBoxEvaluationOptions
            .getDefaultInstance();
      }
    }
    /**
     *
     *
     *

     * Only specify this field if the related model performs image object
     * detection (`IMAGE_BOUNDING_BOX_ANNOTATION`). Describes how to evaluate
     * bounding boxes.
     *

     *
     *
     * .google.cloud.datalabeling.v1beta1.BoundingBoxEvaluationOptions bounding_box_evaluation_options = 1;
     *
     */
    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.cloud.datalabeling.v1beta1.BoundingBoxEvaluationOptions,
            com.google.cloud.datalabeling.v1beta1.BoundingBoxEvaluationOptions.Builder,
            com.google.cloud.datalabeling.v1beta1.BoundingBoxEvaluationOptionsOrBuilder>
        getBoundingBoxEvaluationOptionsFieldBuilder() {
      if (boundingBoxEvaluationOptionsBuilder_ == null) {
        if (!(verticalOptionCase_ == 1)) {
          verticalOption_ =
              com.google.cloud.datalabeling.v1beta1.BoundingBoxEvaluationOptions
                  .getDefaultInstance();
        }
        boundingBoxEvaluationOptionsBuilder_ =
            new com.google.protobuf.SingleFieldBuilderV3<
                com.google.cloud.datalabeling.v1beta1.BoundingBoxEvaluationOptions,
                com.google.cloud.datalabeling.v1beta1.BoundingBoxEvaluationOptions.Builder,
                com.google.cloud.datalabeling.v1beta1.BoundingBoxEvaluationOptionsOrBuilder>(
                (com.google.cloud.datalabeling.v1beta1.BoundingBoxEvaluationOptions)
                    verticalOption_,
                getParentForChildren(),
                isClean());
        verticalOption_ = null;
      }
      verticalOptionCase_ = 1;
      onChanged();
      ;
      return boundingBoxEvaluationOptionsBuilder_;
    }

    @java.lang.Override
    public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
      return super.setUnknownFields(unknownFields);
    }

    @java.lang.Override
    public final Builder mergeUnknownFields(
        final com.google.protobuf.UnknownFieldSet unknownFields) {
      return super.mergeUnknownFields(unknownFields);
    }

    // @@protoc_insertion_point(builder_scope:google.cloud.datalabeling.v1beta1.EvaluationConfig)
  }

  // @@protoc_insertion_point(class_scope:google.cloud.datalabeling.v1beta1.EvaluationConfig)
  private static final com.google.cloud.datalabeling.v1beta1.EvaluationConfig DEFAULT_INSTANCE;

  static {
    DEFAULT_INSTANCE = new com.google.cloud.datalabeling.v1beta1.EvaluationConfig();
  }

  public static com.google.cloud.datalabeling.v1beta1.EvaluationConfig getDefaultInstance() {
    return DEFAULT_INSTANCE;
  }

  private static final com.google.protobuf.Parser<EvaluationConfig> PARSER =
      new com.google.protobuf.AbstractParser<EvaluationConfig>() {
        @java.lang.Override
        public EvaluationConfig parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };

  public static com.google.protobuf.Parser<EvaluationConfig> parser() {
    return PARSER;
  }

  @java.lang.Override
  public com.google.protobuf.Parser<EvaluationConfig> getParserForType() {
    return PARSER;
  }

  @java.lang.Override
  public com.google.cloud.datalabeling.v1beta1.EvaluationConfig getDefaultInstanceForType() {
    return DEFAULT_INSTANCE;
  }
}

redpajama_set_name: RedPajamaGithub


text:
Lo US Open 2006 è stata la 125ª edizione dello US Open e quarta prova stagionale dello Slam per il 2006. Si è disputato dal 28 agosto al 10 settembre 2006 al USTA Billie Jean King National Tennis Center in Flushing Meadows di New York negli Stati Uniti.
Il singolare maschile è stato vinto dallo svizzero Roger Federer, che si è imposto sullo statunitense Andy Roddick in 4 set col punteggio di 6–2, 4–6, 7–5, 6–1. Il singolare femminile è stato vinto dalla russa Marija Šarapova, che ha battuto in 2 set la belga Justine Henin. Nel doppio maschile si sono imposti Martin Damm e Leander Paes. Nel doppio femminile hanno trionfato Nathalie Dechy e Vera Zvonarëva. Nel doppio misto la vittoria è andata alla statunitense Martina Navrátilová, in coppia con Bob Bryan.

Partecipanti uomini

Teste di serie

Altri partecipanti
I seguenti giocatori hanno ricevuto una wildcard per il tabellone principale:
  Sam Querrey
  Ryan Sweeting
  Scoville Jenkins
  Wayne Odesnik
  Alex Kuznetsov
  Donald Young
  Phillip Simmonds
  Mark Philippoussis

I seguenti giocatori sono passati dalle qualificazioni:

  Benjamin Becker
  Łukasz Kubot
  Marco Chiudinelli
  Alejandro Falla
  Noam Okun
  Thiago Alves
  Kristian Pless
  George Bastl
  Stefan Koubek
  Juan Martín del Potro
  Joshua Goodall
  Jesse Witten
  Jiří Vaněk
  Robert Kendrick
  Jeff Morrison
  Michael Russell
  Sam Querrey (lucky loser)
  Ryan Sweeting (lucky loser)

Risultati

Singolare maschile

 Roger Federer  ha battuto in finale  Andy Roddick 6–2, 4–6, 7–5, 6–1

Singolare femminile

 Marija Šarapova ha battuto in finale  Justine Henin 6–4, 6–4

Doppio maschile

 Martin Damm /  Leander Paes  hanno battuto in finale  Jonas Björkman /  Maks Mirny 6–7(5), 6–4, 6–3

Doppio femminile

 Nathalie Dechy /  Vera Zvonarëva hanno battuto in finale  Dinara Safina /  Katarina Srebotnik 7–6(5), 7–5

Doppio misto

 Martina Navrátilová /  Bob Bryan hanno battuto in finale  Květa Peschke /  Martin Damm 6–2, 6–3

Junior

Singolare ragazzi

 Dušan Lojda ha battuto in finale  Peter Polansky 7-6(4) 6-3

Singolare ragazze

 Anastasija Pavljučenkova ha battuto in finale  Tamira Paszek 3-6 6-4 7-5

Doppio ragazzi

 Jamie Hunt /  Nathaniel Schnugg hanno battuto in finale  Jarmere Jenkins /  Austin Krajicek 6-3 6-3

Doppio ragazze

 Mihaela Buzărnescu /  Ioana Raluca Olaru hanno battuto in finale  Sharon Fichman /  Anastasija Pavljučenkova 7-5 6-2

Carrozzina

Singolare maschile in carrozzina

 Robin Ammerlaan ha battuto in finale  Michael Jeremiasz 6-7(1), 6-3, 7-5

Singolare femminile in carrozzina

 Esther Vergeer ha battuto in finale  Sharon Walraven 6-1, 6-2

Doppio maschile in carrozzina

 Robin Ammerlaan /  Michael Jeremiasz hanno battuto in finale  Shingo Kunieda /  Tadeusz Kruszelnicki 7-6(2), 6-1

Doppio femminile in carrozzina

Altri progetti

Collegamenti esterni

ATP Tour 2006
WTA Tour 2006

redpajama_set_name: RedPajamaWikipedia


text:
/* $Id$ */
/* AliAnalysisTaskEx01.h
 *
 * Template task producing a P_t spectrum and pseudorapidity distribution.
 * Includes explanations of physics and primary track selections
 *
 * Based on tutorial example from offline pages
 * Edited by Arvinder Palaha
 */
#ifndef ALIANALYSISTASKEX01_H
#define ALIANALYSISTASKEX01_H

class TH1F;
class TList;
class AliESDtrackCuts;

#ifndef ALIANALYSISTASKSE_H
#include "AliAnalysisTaskSE.h"
#endif

class AliAnalysisTaskEx01 : public AliAnalysisTaskSE {
 public:
    AliAnalysisTaskEx01();
    AliAnalysisTaskEx01(const char *name);
    virtual ~AliAnalysisTaskEx01();

    virtual void     UserCreateOutputObjects();
    virtual void     UserExec(Option_t *option);
    virtual void     Terminate(Option_t *);

 private:
    TList           *fOutput;        // Output list
    AliESDtrackCuts *fTrackCuts;     // Track cuts
    TH1F            *fHistPt;        // Pt spectrum
    TH1F            *fHistEta;       // pseudorapidity spectrum
    // NEW HISTO to be declared here

    AliAnalysisTaskEx01(const AliAnalysisTaskEx01&); // not implemented
    AliAnalysisTaskEx01& operator=(const AliAnalysisTaskEx01&); // not implemented

    ClassDef(AliAnalysisTaskEx01, 1); // example of analysis
};

#endif


Liability risk isn't limited to illegal activities like paying kickbacks or bribing officials. Off-label promotion, adverse event reporting and even basic GMP issues can trigger an FCA action.
And the interim final rule from the Department of Justice virtually doubles penalties for FCA violations.
The False Claims Act Liability management report explains the basics of FCA liability and highlights areas of regulatory risk for drug and device manufacturers. Use it to build a strategy for avoiding problems and dealing with charges if they do happen.
With penalties typically in the millions — even billions — of dollars you can't afford to not be in compliance. Order your copy of the False Claims Act Liability management report today.


Jurisprudentially speaking, "proselytism" is a concept within the larger genus of the protection of religious rights and freedoms. The word lends itself to differing opinions. However, there is a popular school of thought that "proselytism" has to do only with influencing people to adopt a particular religion. Such an understanding relies on the view that only the "religious" can be insidious and bear the potential to improperly proselytise, and thus excludes the possibility of improper irreligious forms of influence. In referring to the example of public-school education, it is argued that as much as the religious has the potential for improper proselytising, irreligious teachings or expressions also run the risk of improper proselytising. Not only are irreligious beliefs in many instances diametrically opposed to religious beliefs; they are a belief in themselves and cannot be seen as necessarily harmless or without the potential to proselytise improperly. Consequently, this article introduces an equitable and accommodative understanding of proselytism, which places the potentially harmful effects of both religious and irreligious beliefs on an equal footing with each other (something befitting to plural and democratic paradigms). This article therefore also cultivates further debate on improper irreligious proselytism in religious rights and freedoms jurisprudence, a scant topic in human rights jurisprudence.


Click on any of the questions below to view the answer.
SMS Poll is the easiest and fastest way to find out what your students, fans, customers, conference attendees, audience or anyone else is thinking! Requiring no special hardware or software, anyone can create a poll in just a few seconds. Your audience votes by sending an SMS to a local phone number and the results are updated right before your eyes, in real-time, in your PowerPoint presentation or on your website.
SMS Poll is the simplest and best SMS voting and audience response system on the market. Best of all, the power is truly in your hands - setup is instant and anyone can use it. You can create as many polls as you'd like, choose from a variety of different charts and effects to apply to your real-time results, and download the results at any time to Excel for analysis. And if you're away from your computer or don't have access to the Internet, you can even have the latest results sent to your mobile phone.
Sign Up for our Free Plan now and give it a try. No risks, no obligations, no catches.
There are four simple steps to SMS Poll.
Create: Type in your poll question and up to ten possible responses.
Customise: Select colours, fonts, effects, and chart styles for your poll results.
Share: Add your poll to your PowerPoint presentation, website or blog.
Vote: Have your audience vote by sending an SMS and watch the results update in real-time.
Of course there are lots of other fun features you can take advantage of too, such as Web Voting and receiving the poll results on your mobile or downloading them all to Excel.
For a complete overview of SMS Poll, please visit the How It Works page.
How is it different from an Audience Response System?
SMS Poll is ten times less expensive than traditional Audience Response Systems and requires no special hardware or software. For a detailed comparison, please have a look at the Why We're Different page.
What are the applications of SMS Poll?
Teachers use SMS Poll to actively involve all students in the learning process, keeping them engaged, improving their knowledge retention, and assessing their understanding and retention of course material.
Promoters use SMS Poll to let the crowd select the song the band plays for its encore or the game's Man of the Match.
Event Planners use SMS Poll to find out delegate opinions, encourage full attendee participation, and offer audience choice contests throughout the event.
Public Speakers use SMS Poll to grab the audience's attention, tailor their presentations based on audience response, and encourage discussion and debate.
Market Researchers use SMS Poll to instantly gather data from a large group of people without ever having to fill-in or collate paper forms.
Not For Profits use SMS Poll to increase participation at charity events and silent auctions, and allow religious leaders to poll their congregation.
Corporations use SMS Poll to measure the effectiveness of training programs, gain open and honest feedback from anonymous responses, and gather instant feedback at product launches.
How does my audience vote?
To vote, your audience simply uses their mobile phones to send a text message to a local phone number. In the body of the message they indicate the option they would like to vote for (we provide a unique number for each option to make it really easy for your audience to vote).
Your audience can also vote online if you enable Web Voting.
How fast do votes show up and how will I see the results?
Votes are received and displayed in just a few seconds.
How much does it cost to use SMS Poll?
We have a variety of different pricing plans to suit every requirement, including a completely Free Plan.
You say you have a Free Plan. What's the catch?
No catch, we promise. When you Sign Up for our free plan you will never be asked for any form of payment and you can use SMS Poll for as long as you like. If you require additional votes or would like to take advantage of some of our cooler features, you can upgrade at any time. But if the Free Plan meets your requirements, enjoy!
How much does it cost for a person to vote on one of my polls?
To vote, your audience sends an SMS to a local phone number. This is not a premium number so there is absolutely no charge for sending this message other than the standard local SMS charge they would incur the same as if they sent an SMS to a friend. In Australia this is less than 4 cents a message on most plans.
Is there a limit to how many polls I have or how many votes I can receive?
There is no limit to how many polls you can have.
The number of votes you can receive is limited by poll and by month based on the pricing plan that you are on.
Can I use my own custom keywords or phone number for my poll?
Yes. We do support these features but not as part of our standard pricing plans. Please contact us for more information.
Can users vote over the web?
Yes. SMS Poll offers Web Voting which allows you to place your poll on your website or blog. Your audience simply clicks on the vote button next to the option they wish to vote for and the results will be updated accordingly. We give you all the HTML code you need to include the poll question, possible responses, and voting buttons on your site - all you need to do is cut and paste.
Can I embed my poll in PowerPoint and see the results update in real-time?
Yes. This is incredibly simple to do and we even provide you with a template to download. You run your PowerPoint presentation like you would any other and your customised chart will appear along with voting instructions for your audience and as the votes come in, the chart will animate and update in real-time.
Can I embed my poll in a website or blog and see the results update in real-time?
Yes. Just take the HTML code we provide, add it to your site, and you're done. We've tested SMS Poll across Internet Explorer, Firefox, Safari, Opera, WordPress, My Space and a host of other platforms so that you don't have to.
Can I download my poll results to a spreadsheet?
Yes. You can download detailed poll results, including precisely when each vote was received, to Excel and analyse them to your heart's content!
Can I change the look and feel of my chart?
Absolutely. You can change colours, fonts, gradients and sizes to make the charts look exactly how you want them to look!
And because SMS Poll uses Adobe Flash (which 99% of browsers already have) to display your results, no special hardware or software is required.


text:
Newly rebuilt Wolf Pack heads to cross country championships
The Wolf Pack compete at the LSU Cross Country Festival in September 2017.
Jacob Schmitt
Filed under Cross Country, Sports
Throughout this season of rebuilding for the cross country team, the Wolf Pack prepares to hit the road for the Southern States Athletics Conference Cross Country Championship on Saturday, Nov. 3. The championship meet at Choctaw Trails in Clinton, Mississippi will feature nine different universities.
Last year's winners for both the women's and men's race was Bethel University, located in McKenzie, Tennessee.
Assistant coach Livia Mahaffie is looking forward to seeing how the team's training and efforts will pay off in the Championship.
"I'm really excited. Walt [Ramsey] and Sasha [Solano-McDaniel] have a very high chance of qualifying individually. It's going to really be the end of our top five really coming together and sticking together as a unit throughout the race which will determine where we will finish in the race," Mahaffie said.
Freshman standout and environmental studies major Walt Ramsey felt that his freshman year on the cross country team had gone well.
"Our team is mostly freshmen so I feel like everybody has gotten better together. We've ran really well," Ramsey said.
When asked about his goals and accomplishments this season, he added, "I was just looking to feel good about my freshman year and so far I've felt pretty solid about it."
Ramsey's accomplishments for the season include multiple first place finishes for the Loyola roster and a sixth place finish in the Allstate Sugar Bowl Cross Country Festival.
Sasha Solano-McDaniel, sociology freshman, also felt the season went well.
"I feel like we've made a lot of progress. I think this year we've kind of put it together. I think we're gonna keep improving. My goal [for the season] was to break 20:00 and I made 19:54 so I'm happy with that and hoping to continue," she said.
This is Solano-McDaniel's first SSAC championship of her collegiate career.
When asked about potentially making a national championship, Solano-McDaniels said, "It's definitely a viable option. It's definitely a goal I've set for myself so I want to take advantage of the opportunity and go for it. During the championship, I'm looking forward to hopefully everyone [breaking their personal record] and just ending the season on a good note. If we don't make it to nationals or we do, just keep progressing as a team."
The team's most recent meet was the Florida State Invitational where they finished 15th out of 16.
High school cross-country star races to Loyola
Walter Ramsey wins scholar award
Solano-McDaniel named Scholar-Athlete of the Year
Cross Country athletes sprint towards scholar awards
Friendship between two Loyola runners goes beyond the race-trail
Coach Bryant sprints to new position
Loyola cross-country take both individual win's at Major Blazer Invitational
Loyola place three top-10 runners at Allstate Sugar Bowl Festival
Wolf Pack place three runners top 10 in first cross country meet
Kevin Licht is ready for a new journey at the helm of Loyola's Track teams

redpajama_set_name: RedPajamaCommonCrawl


Make a great deal at never-before-seen prices with Endless Beauty Care best coupon: Endless Beauty Care eGift Certificates from $15. Beat the crowd and buy now.
Find the best selection of items you want at endlessbeautycare.com: Earn 1 piont for every $1 spend. Purchase what you like with discounted prices online.
Get your favorite items at perfect prices with Endless Beauty Care best promo: Free Shipping On U.S. Orders Over $48. Apply code at checkout to receive this offer.
Get amazing savings on select items at perfect prices with CDKeys best coupon: Extra 10% off. Beat the crowd and buy now.
By providing our dear customers with 1 coupon codes, 3 deals and other in-store offers, Endless Beauty Care discount offers for your all orders, so you can get your Endless Beauty Care items for less, especially with your Endless Beauty Care promo code!
We provide all the newest Endless Beauty Care coupon & promo codes for you at Endless Beauty Care or online. We try our best to find all the discounts going on at Endless Beauty Care and endlessbeautycare.com in order to save your money. We also give detailed shopping tips to let you successfully use the Endless Beauty Care promo code. Start applying the Endless Beauty Care coupon code for free before checkout.
Apply our best Endless Beauty Care promo code and get bigger discounts at online store Endless Beauty Care. Amazing discounts at Endless Beauty Care are waiting for you. Click now, don't regret it.
How to Use Promo Codes at endlessbeautycare.com?
Grab 22% off on your purchase of an item at Endless Beauty Care. Take advantage of our latest Endless Beauty Care Coupon Codes. The great discount from Endless Beauty Care help you to save big!


text:
DDoS attacks on Minecraft event crippled the internet of a European country
The series of DDoS attacks took place during a live online gaming event titled "SqiudCraft" (inspired by Netflix's Squid Game), while the country to suffer the most is Andorra, officially the Principality of Andorra, a small country in Europe.
A multi-day Netflix's Squid Game-inspired gaming tournament titled SquidCraft on Minecraft was held between January 19th to January 24th. The event was hosted by Twitch Rivals. But it impacted a small European country named Andorra in the most bizarre manner.
For your information, Twitch Rivals is an esports tournament and online competitive event featuring Twitch streamers and former pro players. Unfortunately, during the event that ended just yesterday, Andorra's only Internet service provider (ISP) Andorra Telecom, was targeted with a series of massive DDoS attacks causing the whole country's internet to shut down.
Reportedly, the DDoS attack happened during the tournament's second day, when eight or more competitors got their connections disrupted simultaneously, and the country's internet infrastructure went offline.
The internet services remained unavailable for more than 30 minutes. Due to the DDoS attacks, the hometown participants from Andorra were eliminated from the competition, and NetBlocks confirmed the attack via Twitter.
According to NetBlocks, a watchdog organization that monitors cybersecurity and cyberattacks related events globally also confirmed the attack. In a tweet, the organization said that:
DDoS Impacted Andorra's Only ISP Service
Andorra Telecom is Andorra's only internet service provider (ISP). The company suffered multiple DDoS attacks when the SquidCraft Games tournament was underway. The attacks strategically occurred during the scheduled timings of the game. As a result, more than eight Andorran streamers were eliminated from the tournament as they repeatedly disconnected.
Rumors are rife that the Minecraft DDoS attacks were launched to get the tournament's massive $100,000 prize money. For your information, the event has been won by OllieGamerz.
Andorra's Confirmation
Andorra Telecom took to Twitter to confirm the attack. The company's confirmation message read:
"Please note that the network is currently undergoing a Denial Of Service (DDoS) attack. As a result, some users may find it hard to browse the web. We are handling it."
Andorra Telecom
At the time of publishing this article, Andorra Telecom's services were restored.
What is SquidCraft?
SquidCraft is one of the most successful Twitch Rival tournaments in cyberspace. The tournament's name is inspired by the popular Netflix series Squid Games. However, it is played in Minecraft. Nevertheless, it is a highly anticipated tournament and a viral streaming event garnering a viewership of millions.
More DDoS attacks & security news:
Minecraft declared the most malware-infected game
Microsoft Azure customer hit by 2.4 Tbps DDoS attack
Iranian Gas Stations Crippled After Suffering Cyberattack
Bandwidth.com reports multimillion-dollar loss post-DDoS attacks
A man whose DDoS attacks took down the entire country's Internet jailed
Western Digital My Book Live hard drives remotely wiped by hackers
People are shocked to find out all of their data stored on their Western Digital My Book Live hard drives has been wiped out through a factory reset.
S3 bucket mess up exposed 182GB of senior US, Canada citizens data
The misconfigured S3 bucket was owned by SeniorAdvisor, a consumer ratings, and reviews website.
Anonymous Targets Nigerian Government Sites, Wages War Against Corruption
Appalled by Corruption, Theft & Poverty- Anonymous Declares Cyberwar against Nigerian Government Anonymous, the infamous hacktivist group having…
Russian Hacker Exploits GTA 5 PC Mod to Install Cryptocurrency Miner
Gamers were delighted with the release of world's second most popular video game Grand Theft Auto V (GTA…


My experience with Ekondo has been impressive. My loans are usually processed promptly and this has really helped me in my business. With their Mobile Apps, life has been easier as I can now sit in my shop and make payments to my suppliers who upon receiving the Alerts would send the goods to me without any delay. I am really enjoying their service.
Ekondo is really trying for us the Civil Servants, all those period that salaries were not paid. Ekondo really help o with Overdraft and Fast Cash. That's what we were using to survive. I have just collected their Loan from them and the repayment plan is very ok. Very soon, I should be a proud owner of my own house.


> > you want to *distribute* combined (your code + my GPL'd code).
> source code to the whole world (not only clients) then?
fork the code. AND FINALLY YOUR ARE FREE TO *ignore* MY CODE!
the license. I love GPL and found it pretty suitable for my needs.


While some corporate legal departments (CLDs) have been in the document management system (DMS) space for some time now, RBRO's experience is that for many, especially smaller CLDs, the price point in the past has been prohibitive. Given the availability of cloud technology, which not only makes the initiative less expensive, the cloud option also requires less support from the corporate IT department. These factors make the implementation of a DMS, specifically for smaller CLDs much more realistic than in the past.
DocsCorp have improved the PDF stylus experience, making annotating using a stylus as natural as working with red pen and paper.
So, you've decided to embark on a journey to a cloud-based document management system (DMS). Make your way to the gate and prepare for a safety demonstration on how to protect against a bumpy ride.
Workshare Compare is the market-leading solution for content comparison.


text:
Q: jquery multiple selectors and 'and' operator I need to enable the submit button when 2 fields have some value. I'm checking this using the following code:
var foo1 = $('input#foo1');
    var foo2 = $('input#foo2');
    $(foo1, foo2).on('input', function(){
        if((foo1.val().length < 1) && (foo2.val().length < 1 )){
            disableAdd('btnName');
        } else {
            enableAdd('btnName');
        }
    });

however if the length of foo2 is 0, it still enables the button. Also this only works when I start typing into foo1, not foo2

redpajama_set_name: RedPajamaStackExchange


Decoration Trompe L Oeil #8 - Ambiance Graffiti Dans Un Loft Int233rieur LYONBOMBING was uploaded in May 28, 2018 at 2:28 pm. If you like to use this image as your desktop background, you may click the download link beneath or you may just right click on the picture at the top and pick "Save Image As" to download the Decoration Trompe L Oeil #8 - Ambiance Graffiti Dans Un Loft Int233rieur LYONBOMBING or by tap the "Set Desktop Background As" section if your browser has that capability. If you could not take the the best picture you are looking for, you need to go for "Search Column" at top right or browse different picture wallpapers which you love. This image has the photo size is 1129kB and the dimension of 1280x960. Decoration Trompe L Oeil #8 - Ambiance Graffiti Dans Un Loft Int233rieur LYONBOMBING has been viewed by 40 visitors and it is a photo from Decoration Trompe L Oeil.


People are always calling up asking for the most current colors and styles, so if we don't sell out of our inventory by the change of the season we end up with some of our most popular gear sitting on the shelves collecting dust. Well, we've decided to make the older colors and styles a little more desirable by blowing them out in our new Mountains Plus Gear Outlet section! Need a new backpack? We have the Osprey Aura 50 and Atmos 50 packs available starting at just $119.40, that's 60% off!! How about a new pair of polarized shades to keep the sun out of your eyes this summer? We have brand new Native sunglasses available, starting at just $84.15!! So stop wasting your time doing price comparisons all day online, and get over to the gear outlet for the best deals out there!
« Schwalbe Tires…best rubber on the road!


Do you need the best teacher and the best price?
You are in the right place! It's CosmoSkype!
CosmoSkype is your chance to have private lessons with the best bilingual teacher or native speaker.
We save your money as our methods are the most effective.
Join us! Just order a trial lesson!
CosmoSkype is an international online school, where you learn foreign languages with the best teachers via Skype in private.
It can be a bilingual teacher or a native speaker.
Wherever you live, you can study at CosmoSkype and get tremendous skills in English, French, German, Russian, Polish, Italian, Spanish etc.
Together with a teacher you can frame an individual program according to your needs and ability.
want to refresh their knowledge of English or to improve it.
We propose Skype English lessons for everyone, who needs to master his or her skills in English. And for those who want to start learning English.
We will help you to break the barrier which hinders in communication.
Are you looking for 'English Skype'? Here it is - CosmoSkype!
Our Skype English lessons are effective from the first classes.
English Skype – is the most convenient, flexible, fruitful and the easiest way for everyone to learn English. The great thing is that our lessons are cheap and you don't have to spend money on transport and books. Enjoy interactive Skype English lessons with an experienced teacher, one to one online!
There are even more advantages! It doesn't matter where you are – at your job, a car, a backyard or at home – you can always join in with Skype English lessons. You can do it anytime you have a gap in your schedule. And the cozy atmosphere of your native place will help you to relax.
Start learning English (German, French, Russian, Italian etc.) via Skype right now and you will notice the change: you will speak the foreign language with more confidence and you will understand the lively talk of representatives of foreign countries. The result will be visible!
Have a try! You will be a winner in your social life with CosmoSkype! (Look Step 1).


text:
Александр Викторович Цой (также известен под псевдонимом Александр Молчанов; род. 26 июля 1985, Ленинград) — российский исполнитель, композитор, дизайнер-оформитель, бывший гитарист группы «Para bellvm», автор видеоэффектов проекта «Симфоническое Кино», лидер музыкального проекта «Ронин».

Единственный сын лидера группы «Кино» Виктора Цоя и его жены Марьяны Цой.

Биография

Александр Цой родился в 1985 году в семье рок-музыканта Виктора Цоя и его жены Марьяны Цой. После того, как Виктор Цой ушёл от жены к Наталье Разлоговой, Александр остался жить с матерью. После гибели Виктора Цоя в 1990 году Марианна начала сожительствовать с Александром Аксёновым — музыкантом группы «Объект насмешек», который, по словам Алексея Вишни и Андрея Тропилло, может быть биологическим отцом Александра. Андрей Тропилло также сказал, что Виктор Цой был бесплоден и он знал, что сын — не его по крови, но дал ему свою фамилию; даже предложил Александру сделать тест ДНК, однако друг Цоя режиссёр Рашид Нугманов утверждает, что Александр в своей внешности имеет черты Виктора.

В 16 лет Александр уехал в Москву, где жил и занимался веб-дизайном, а также изучением английского языка.

Марианна Цой после смерти Виктора отсудила у музыкантов группы «Кино» авторские права на песни группы и оформила их на сына Александра и компанию «Moroz Records».

В 2005 году Марьяна Цой скончалась от опухоли мозга и Александр стал жить с бабушкой по материнской линии.

Со своим дедушкой Робертом Максимовичем Цоем Александр отношения практически не поддерживает.

В дальнейшем, чтобы избавиться от внимания журналистов и поклонников отца, он взял себе псевдоним Молчанов и занялся игрой на гитаре в группе «Para bellvm», где участвовал в записи альбома «Книга царств». Занимался оформлением музыкальных обложек альбомов. Основал музыкальный клуб «da: da:».

В декабре 2010 года женился на Елене Осокиной. Примечательно, что в это же время, после смерти жены, в очередной раз женился и его дедушка — Роберт Максимович Цой.

В 2011 году, по сообщениям СМИ, Александр продал Олегу Тинькову для его банка «Тинькофф» права на песню «Дальше действовать будем мы». В своём интервью Александр, однако, поведал, что права на песню были проданы без его согласия компанией «Музыкальное право», с которой он в судебном порядке пытается расторгнуть все отношения. К самому Олегу Тинькову он относится отрицательно.

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

В 2014 году подал судебный иск против депутата Госдумы Евгения Федорова, якобы оклеветавшего его отца. Тем не менее никаких нарушений в словах Евгения Фёдорова суд не нашёл. Фёдоров процитировал мнение сотрудников КГБ СССР о творчестве Цоя, а не озвучил своё суждение.

В 2014 году Рашид Нугманов объявил о своих планах начать съёмки фильма «Цитадель смерти» по его совместному с Уильямом Гибсоном сценарию (который изначально писался под Виктора Цоя) и взять на главную роль Александра Цоя, который, в свою очередь, поддержал эту идею.

3 августа 2017 года представил песню «Шёпот» своего нового сольного музыкального проекта — «Ронин», в котором он является автором, музыкантом и вокалистом. Текст песни «Шёпот» был написан им ещё в 18-летнем возрасте. 3 сентября был выпущен мини-альбом «Опора», который содержит в себе 5 песен. В дальнейшем одним из участников группы стал Юрий Каспарян.

В 2019 году Александр Цой предложил организовать концерты группы «Кино», в которых использовался бы вокал Виктора Цоя из старых песен, но при этом живая музыка бывших участников группы и специально разработанный видеоряд. Предполагалось, что на сцену выйдут музыканты «Кино» — Тихомиров, Титов и Каспарян — барабанные партии исполнит Олег Шунцов (участник проекта «Симфоническое кино»), на акустической гитаре сыграет Дмитрий Кежватов из группы «Тараканы!». Концерты должны были состояться 31 октября (Санкт-Петербург), 7 ноября (Минск, Беларусь), 11 ноября (Рига, Латвия) и 21 ноября (Москва) 2020 года. Из-за коронавирусных ограничений они были перенесли на 2021 год.

Стал прототипом персонажа Жени, сына Виктора Цоя в фильме Алексея Учителя «Цой» (2020). При этом сам Александр Цой выступил с жёсткой критикой фильма.

Внештатный колумнист RT.

Фильмография

Дискография
 2008 — группа «Para bellvm», альбом «Книга царств» — гитара
 2019 — трибьют группе Tequilajazzz, трек «Укрощая змей»
 2021 — группа «Кино», концертный альбом «Кино в Севкабеле» — идея и реализация проекта
 2022 — группа «Кино», альбом «12 22» — идея и реализация проекта

Примечания

Персоналии:Русский рок
Семья Виктора Цоя
Кино (группа)


text:
Review Senzala Hi-Tech – Represença
by Adailton Moura 22 August, 2019
After a decade of existence, Senzala Hi-Tech release their first album, Represença, confronting Brazil's political establishment.
The group's sound is founded in Afro-Futurism, blending rap, reggae, samba, dub, and references from Afro-Brazilian religions. This is the sonic stage set for former taekwondo fighter Diogo Silva (gold medalist at the 2007 Pan American Games), MC Sombra, Minari and Junião to address controversial issues that have permeated Brazil in its 519 years of existence. From the near extermination of the Indian population, 300 years of (unrepaired) slavery, and into the current disturbing reality, permeated by oppression, violence, racial discrimination, fraud, fake news and ideological impositions, all disguised as being on the right side of morality.
"The words refer to how we respond to certain information and how fragile we have become in interpreting it. [You have to] understand that corruption is ambidextrous, it has no side and is older than Brazil. The country has to be violent in order for someone to sell security and that's what we talk about: old practices that are given new clothes with new characters, " says Diogo.
This critical tone is softened by the percussion-laden danceable qualities of the tracks, much influenced by candomblé, which act as a counterpoint to show the two realities of Brazilianness: the structural problems, which are rooted in culture, and the brilliant diversity of sounds produced by the influence of different peoples, mostly from the African diaspora.
The main purpose of Represença is to alert the public about the easy solutions that are constantly promised. "First question, then reflect, and then question again," they say. "We cannot afford to ignore the social and political, we live in a time where it is increasingly important to get involved and this is reflected in our work".
Follow Sounds and Colours: Facebook / Twitter / Instagram / Mixcloud / Soundcloud / Bandcamp
Subscribe to the Sounds and Colours Newsletter for regular updates, news and competitions bringing the best of Latin American culture direct to your Inbox.
Colombia / PREMIÈRE: The Whole Body Moves on 'Manos', Latest Video from Colombia's Mente Orgánica
Brazil / Alta Fidelidade: Chance Encounters of the Random Kind
Venezuela / Up-Close Encounter with Angel Rada
Caribbean / REVIEW Various Artists – Cadence Revolution: Disques Debs International Vol. 2
Colombia / Vinyl Lovers: Henry Manyoma Gil – Radio Host, Cultural Investigator, Collector
Prezident Markon's New Year's Honours List
Basy Tropikalne's Essential Latin Downtempo Mix 2019
Cuba / REVIEW Roberto Fonseca – Yesun
Categories: Brazil, Music, Music Reviews
Tags: Diogo Silva, Junião, MC Sombra, Minari, Senzala Hi-Tech
Sounds and Colours is a website and print publication focused on South American music and culture
About Sounds and Colours
Sounds and Colours began its life in 2010. Back then it was a simple blog looking at underground culture in South America. Since then it has become one of the world's #1 sources for information on the topic, printing specialist books as well as maintaining this website, with collaborators based around the world. Find out more about Sounds and Colours here.
Book 4: Argentina
Book and CD offering an alternative guide to Argentine culture, focusing on marginalised movements and underground scenes.
Book 3: Peru
200 pages of articles, illustrations and photos focused on Peruvian music and culture (comes with 19-track CD and 2-hour DVD)
Website developed by THG Creative
Sounds and Colours Argentina (Book + CD)
Sounds and Colours Peru (Book, CD + DVD)
Sounds and Colours Brazil (Book + CD)
Sounds and Colours Colombia (Book + CD)
What Is Sounds and Colours?
Advertise on Sounds and Colours


text:
Life of J. S. M. Ward.
B.A., F.R.Econ.S.' F.R.S.S. Late Scholar and Prizeman of Trinity Hall, Cambridge,
John Sebastian Marlowe Ward was born on 22nd December 1885 in what is now known as Belize City, British Honduras and died on July 2nd, 1949 near Limassol Cyprus.
His father, the Reverend Herbert M. Ward was an Anglican priest serving the English community in British Honduras, when his first son, John, was born, but was recalled to England late in 1888, after which he took up a new post as curate of St Mary's Church, London. John and his younger brother Reginald, grew up in London where the boys attended the Merchant Taylor's School. The brothers were close and within the family John was always known as "Jack" and Reginald as "Rex". In this article, however, we will continue to call John Ward, "John", the name by which he was known to the world.
John had extremely poor eyesight and wore thick glasses from a very young age, but he was bright and went on to Trinity College Cambridge. There at the age of nineteen, he married his second cousin Caroline Lanchester who was several years older than he and by whom he had a daughter, Blanche. He graduated with honours from Cambridge in 1908, majoring in History, and his first book, a short history of "Brasses" was published at about the same time. He commenced work as a teacher and also began to write about History and Freemasonry, in which he had always been interested.
Just one of the ancient societies that Ward studied.
Over the next twenty years he was to produce a large number of books on the history and spiritual meanings of Freemasonry. He also wrote for various journals and became a contributor to the Encyclopaedia Britannica on several subjects, and remained listed as such till long after his death.
His Masonic books discuss not only the Western forms of Freemasonry, but various other similar secret societies both past and present in different parts of the world. Most of these books are still in print and many are still regarded as authoritative by modern Freemasons almost a century after they were first written. There are literally hundreds of references to J.S.M. Ward and his Masonic books on the internet.
John Ward's career as a Freemason was an illustrious one, but it was merely a passing phase in the journey of his life. He had always been interested in many other subjects, particularly history, religion and science, but a completely new dimension was added to his researches early in 1914. On 5th January 1914 his uncle and grand father-in-law, Herbert J. Lanchester died unexpectedly and a week later John had a dream that was to introduce him to the then "way-out" world of spiritualism.
He recorded these early psychic experiences in his first psychic book, Gone West, which was published a few years later. In it he describes how he met his uncle in the Realms Beyond, and then for more than six months made regular contact with him on the Spirit Plane. When his younger brother Rex, a lieutenant in the York and Lancaster Regiment, was killed in Flanders on Good Friday, 1916, John Ward deliberately set out to contact him in the Afterlife. The success of his efforts is described in a second Psychic book entitled a Subaltern in Spirit Land.
With the outbreak of the First World War, Ward, unable to enlist because of his eyesight was sent out to Rangoon, Burma as the headmaster of the Diocesan Boys School – an Anglican secondary school that provided free education for the Eurasian boys of Burma. At that time there were many such schools in Burma and John Ward, by virtue of his position wrote to Lord Kitchener, the head of the British Army, offering to raise a brigade of troops from among the Eurasian boys in those schools. Kitchener's reply was abrupt and abrasive. "England has no need of half-castes" was the gist of it and so Ward's grandiose plan was summarily dismissed, late in 1914. A year later, with England desperate for soldiers, the army asked Ward to revive it, but not surprisingly the resentment caused by the first rejection meant that most of the Burmese "half-castes" were no longer willing to fight for Britain. Ward persuaded a number of boys from his own school to enlist, but they were far fewer than the full Brigade he had originally proposed to raise.
Whilst in the Far East, Ward spent time in Ceylon and India as well as Burma. He took this opportunity to continue his researches into the spiritual and, perhaps most importantly, received ordination as a Brahmin High Priest, in the Madura Temple in southern India. This, together with his studies of the Chinese Hung Society, led him to take a further interest in spiritualism and theosophy when he returned to England. This happened early in 1916 for health reasons.
Ward's health had never been good and since moving to Burma, his digestion had suffered significantly. It was only later that he discovered that this was because his servant had been trying to kill him by mixing ground glass with his food. Although he recovered in England, his digestion caused him problems for the rest of his life. Soon after his return to England, his brother Rex (Reginald L. Ward) was killed in an artilery attack in Flanders, and John Ward spent some time assisting him to become established in his new life beyond the grave. Shortly afterwards, their mother, Alice Ward (nee Carver) died, and the two boys were also able to help her become established on the Astral Plane.
In 1918, John Ward obtained employment with the Federation of British Industry and remained with them until 1930, by which time he had become head of the Intelligence Department - that is to say that he was responsible for assessing business opportunities around the world and making recommendations to British Investors. As the Great Depression, was then wracking the land, no one could understand why he resigned in 1930, but to him there was a very good reason.
In 1918 he had commenced to take an interest in the Theosophical movement, but continued his links with various Masonic groups and writing his books. After publishing his second Spiritualist work he also continued to develop his experience in this field, but through his father, who was still the Vicar of St Mary's, John retained his link with Christianity and remained a member of the Anglican Church until it rejected him in 1934.
In the experiences described in his first two Psychic books, Ward had explored the two Planes of Existence closest to the Physical – generally known as the Astral Plane and the Spirit Plane. He had done this with the help of a number of different inhabitants of each Plane but found that whilst each of these Planes contains many sub-divisions, beyond them there exist many still higher Planes of Being. These correspond to what Christians call the Realms of Saints and Angels, but Ward realised that he as a mere mortal could not hope to reach them. This perhaps more than anything else contributed to the upgrading of his spiritual seeking, which began in the first part of the 1920's.
It was during this period of his life that his wife suffered from a debilitating mental disease which eventually killed her in 1926. It was also during this period that he first met his second wife Jessie Page, with whom he was later to assail the heights of mysticism.
Many people do not understand the difference between a psychic and a mystic, and of course the subject is a large one, but basically a psychic is restricted to experiences linked with the Realms of Man – the Physical, Astral and Spirit Planes. A mystic may be a psychic, though he/she is not always one, but a mystic differs from a psychic in that he/she can travel beyond the Realms of Man. This is achieved only through the help and guidance of a Higher Being - a Saint or Angel, or perhaps even God Himself. This, of course is comparatively rare, and especially in great mystics, there is always the danger of self-deception. There are a a number of key tests that must be applied to eliminate this possibility
One may dream that one has met a dead person, or received some sort of psychic communication from him/her but how does one prove to a cynic that the experience was real and not just the product of one's imagination? There are, of course a number of ways, but perhaps the most convincing test, comes when one dreams of another living person, who, when asked is also able to report basically the same experience. When one is a mystic, having experiences on Higher Planes, such confirmation is extremely rare, but it was just this sort of confirmation that led John and Jessie Ward to realise that their experiences were real – not just the product of an over-active imagination
For the Wards, the first such experience came in 1927, when they both dreamt that they were summoned into the presence of a great Angel, told that Christ was about to begin His Descent through the Celestial Planes to the Earth and asked to help in the Preparation for His Coming. This great Angel, of the order of the Thrones, was to become their constant Guide and helper in the years ahead.
Needless to say they both agreed to dedicate the remainder of their lives to this task. On waking their resolve was further strengthened by the discovery that not only did both remember the same experience, but also that each had recalled details that the other had forgotten, and yet when reminded thereof, the second could not only recall it, but could further extend the narrative.
They married soon after and still in 1927, John gave a series of lectures, in which he explained his discoveries and his new calling. From those who came to listen he gained a few followers and the whole group pooled its resources. They purchased a large house in Barnet on the outskirts of London and then built a church on the property, which was also adorned with many antiques and works of art. In 1930, John Ward resigned from his job at the Federation of British Industry and with the help of his community established the country's first Folk Park.
A Folk Park is an Open Air museum, which in this case was based on John's already considerable personal antique collection. The best of this collection is now preserved at the "Abbey Museum" of St Michael's Church (Another church derived from the work of J.S.M. Ward) and those who are interested may wish to visit the Museum's website at http://www.abbeymuseum.asn.au/history.htm
John Ward and some of the members of his community
With some of the carriages that formed part of the Folk Park.
John continued to write books, but now they were linked with psychic and spiritual subjects, rather than with Masonic and historical matters. Some of them such as The Psychic Powers of Christ and Life's Problems were published at this period, whilst his later works were circulated mainly among his own supporters. Of these, the most important were the account of his visions (The Apocalypses of Brother Seraphion) and an exposition of the Book of Genesis entitled "Genesis the Accused". The latter was unfinished at the time of his death and has only recently been completed by Bishop Cuffe. It is now available as part of a two volume set entitled "The Lost Wisdom of Melchizedek".
In the 1930's both the Church and the Folk Park became major tourist attractions, but John Ward's principal interest was always his Church. Unfortunately he was not a priest at this stage and the local Anglican authorities refused to ordain him. At first they supplied his community with a chaplain, but because John refused to stop teaching about the Return of Christ this support was withdrawn in November 1934.
This came as no surprise to John Ward, who in February, March and April that year had had a number of significant mystical visions that seemed to predict the future. Such visions are commonly called Apocalypses and in John's case they seemed to forecast many significant events, not all of which have yet come to pass. Those that have, included an indication that the Anglican Church would expel his group; that Europe would be convulsed by war; that the British Empire was to be destroyed, that southern Africa would throw off White rule and that Islamic Fundamentalism would spread throughout the Middle East and North Africa. It also predicted destructive attacks on many key Western cities in various ways, including the poisoning of the water supply and in the case of New York, a devastating biological assault.
After his expulsion from the Anglican Church, John Ward obtained consecration as a bishop from John Churchill Sibley, on October 6th 1935. Sibley was at that time the Archbishop-Metropolitan of the Orthodox Catholic Church of the British Empire. In December 1938 he died and Ward succeeded him, but even then the clouds of war that the visions had predicted, were gathering over Europe. However, because of those visions Ward knew that England would not be conquered and he also adduced that if only he could persuade his fellow countrymen to accept his message about the Coming of Christ, its Empire, too, might yet be saved.
During the war, the Barnet community was beyond the main reach of the German bombing campaign, and played a part in the war effort by giving shelter to children evacuated from London. Several of these later sought to join the community, and one of them, triggered a court case against Ward when her parents decided to reverse their original written consent for her to join the community. Legal opinion supported Ward, especially as the girl had been sexually abused by her father, but the Trial Judge, promised that a "correct" decision would see him become Chief Justice, turned legal precedent on its head and ordered her to leave the community, though because of the abuse he did not dare to order her to be returned to her parents' custody.
Thus it came about that England rejected Ward and his message and as it was the only way to keep his community intact, he decided to lead it from England before the prophecy about the destruction of its Empire began to be fulfilled. Arrangements took rather more than a year, during which Ward received at least one very significant boon. He was able to bring the Orthodox Catholic Church of the British Empire into communion with a number of other small independent churches with Valid Orders, something he felt was a key step towards Christian Unity. This included a process of mutual re-consecrations by the bishops involved, so that each came to hold many different lines of Succession an important measure of spiritual authority in both Orthodox and Catholic Churches. His own assistant C.M. Chamberlain, who later succeeded him as Archbishop, was also raised to the Episcopate at this period, and then the community left England on 13th July 1946.
They settled in Cyprus, where their simple farming efforts to become self-supporting, together with the royalties from Ward's books enabled them to survive until Ward's death in 1949. After this, the royalties which should have been paid to his widow, Jessie Ward, were withheld and the community suffered real hardship and near-starvation, before eventually fleeing to Australia. As John Ward had foreseen, the Disintegration of the British Empire followed swiftly after Britain's rejection of the Work that he had founded.
John Ward's last Manuscript - a book about Cyprus dedicated to his baby son
He himself continued to write, despite poor health and worsening eyesight. Shortly before his death, he realised his last great ambition and sired an illegitimate son through one of the members of his community. John Reginald Cuffe was born three months before his father's death and for that three months became his pride and joy. Ward's last book, handwritten in an exercise book, was the "Book of John Reginald", in which he recorded his time with baby John and discussed places of interest in Cyprus. That book is still preserved by Bishop Cuffe as a family heirloom.
Ward died peacefully in his sleep on July 2nd 1949. Feeling a little unwell, he had taken a nap after lunch and could not be awakened at about 2. 30 p.m. The closest doctor, Dr. Frangos, summoned from Limassol, determined that he had died of a heart attack brought on by high blood pressure. Jessie Ward was later told that death and been caused by the rupture of a large blood vessel in the head (a stroke).
John Sebastian Marlowe Ward was buried the next day in the local cemetery of St Nicholas, which was chosen over the English Army Depot in Polemedia. Although his death was a terrible shock to those who loved him, Ward had passed as a great mystic should – at peace with God and man, and ready to assume his proper place in those higher realms where for many years he had been a frequent visitor.
Since that time he has continued to watch over and guide his successors, and through his writings even those who have no real interest in him as a person, have been able to draw closer to the Goal of all our striving. This website is just one more stage in bringing his message to the world. May he himself continue to watch over it and all who read it.
For more information see the J.S.M. Ward Website
See also Wikipedia Article: JOHN SEBASTIAN MARLOWE WARD


Dr. Kevin Weitzel is a pediatric dentist at the practice of Dr. Kevin T. Weitzel and Dr. Emmy Burns, Pediatric and Adolescent Dentistry. Dr. Weitzel received his Bachelor of Arts degree from Miami University in Oxford, Ohio. He graduated with his DMD from the Case Western College of Dentistry and also received a Master of Science degree from The Ohio State University. He completed his pediatric dentistry residency program at Nationwide Children's Hospital as Chief Resident of Dental Services, which served as the perfect training ground for his day-to-day work with kids.
Dr. Weitzel is a board certified pediatric dentist and a diplomat of the American Board of Pediatric Dentistry. He's a member of the American Dental Association, The Ohio Dental Association and The Columbus Dental Association.
His love of pediatric dentistry started when, as a child, even though he says he had his share of cavities, he enjoyed going to the dentist. "I know what it's like to be a kid in the dental chair!" says Dr. Weitzel.


text:
layout:     post
title:      iOS – UIView transition effects
date:       2012-05-10 10:00:00
summary:    How to push/pop iOS UINavigationControllers using other animations besides the default one, like flip or curl.
categories: ios
---

![ios-animation](/images/2012-05-10-ios-uiview-transition-effects/ios_animation.png)

I have seen lots of people asking on how to push/pop UINavigationControllers using other animations besides the default one, like flip or curl.

One problem that you will find is that either the question/answer was relatively old, which means that it included have some things not used anymore like `[UIView beginAnimations:]` and `[UIView commitAnimations]` (example [here](http://stackoverflow.com/questions/2215672/how-to-change-the-push-and-pop-animations-in-a-navigation-based-app)) but if you searched enough you will see the use two different approaches nowadays

## UIView Animations only

The first is to use UIView's `transitionFromView:toView:duration:options:completion:` selector before pushing the controller (with the animation flag set to `NO`), like the following:

{% highlight objc %}
UIViewController *ctrl = [[UIViewController alloc] init];
[UIView transitionFromView:self.view toView:ctrl.view duration:1 options:UIViewAnimationOptionTransitionFlipFromTop completion:nil];
[self.navigationController pushViewController:ctrl animated:NO];
{% endhighlight %}

This is pretty straightforward and might be good enough for most projects as the options parameter gives you some nice transitions by default:

- [UIViewAnimationOptionTransitionNone](https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/UIView/UIView.html#//apple_ref/doc/uid/TP40006816-CH3-SW105)
- [UIViewAnimationOptionTransitionFlipFromLeft](https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/UIView/UIView.html#//apple_ref/doc/uid/TP40006816-CH3-SW105)
- [UIViewAnimationOptionTransitionFlipFromRight](https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/UIView/UIView.html#//apple_ref/doc/uid/TP40006816-CH3-SW105)
- [UIViewAnimationOptionTransitionCurlUp](https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/UIView/UIView.html#//apple_ref/doc/uid/TP40006816-CH3-SW105)
- [UIViewAnimationOptionTransitionCurlDown](https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/UIView/UIView.html#//apple_ref/doc/uid/TP40006816-CH3-SW105)
- [UIViewAnimationOptionTransitionCrossDissolve](https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/UIView/UIView.html#//apple_ref/doc/uid/TP40006816-CH3-SW105)
- [UIViewAnimationOptionTransitionFlipFromTop](https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/UIView/UIView.html#//apple_ref/doc/uid/TP40006816-CH3-SW105)
- [UIViewAnimationOptionTransitionFlipFromBottom](https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/UIView/UIView.html#//apple_ref/doc/uid/TP40006816-CH3-SW105)

One key aspect is to note that the `animated:` parameter is set to `NO`, as we are performing the animation from one view to another manually, avoiding the default one that the `UINavigationController` provides.

Ok, but sometimes you want some more radical animations, and thats when Core Animation calls you to action

## Using CoreAnimation

This second approach uses CoreAnimation explicitly with a `CATransaction` like the following:

{% highlight objc %}
CATransition* transition = [CATransition animation];
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];
transition.duration = 1.0f;
transition.type =  @"flip";
transition.subtype = @"fromTop";
[self.navigationController.view.layer removeAllAnimations];
[self.navigationController.view.layer addAnimation:transition forKey:kCATransition];

UIViewController *ctrl = [[UIViewController alloc] init];
[self.navigationController pushViewController:ctrl animated:NO];
{% endhighlight %}

First observation, you will have to have the [QuartzCore framework](http://developer.apple.com/library/mac#documentation/graphicsimaging/reference/QuartzCoreRefCollection/_index.html) added to your project for this approach and also add `<QuartzCore/QuartzCore.h>` to the class this code is used to make it work.

There are several aspects that this approach differs from the first one. The main one is that the first one results in a code that looks a lot cleaner the the Core Animation one, but there is a big trade-off as CoreAnimation opens the gate to several really cool transitions like "suckEffect", "cube", and [others](http://iphonedevwiki.net/index.php/CATransition). Here is a list of some of the possible native effects.

- cameraIris
- cube
- fade (kCATransitionFade)
- moveIn (kCATransitionMoveIn)
- oglFlip
- pageCurl
- pageUnCurl
- push (kCATransitionPush)
- reveal (kCATransitionReveal)
- rippleEffect
- suckEffect
- genieEffect
…

As you might have noticed, a lot of the transitions does not have a native constant value, so you might get worried about using these undocumented transitions types (i.e. not present in the [Common transition types documentation](http://developer.apple.com/library/iOS/#documentation/GraphicsImaging/Reference/CATransition_Class/Introduction/Introduction.html#//apple_ref/doc/constant_group/Common_Transition_Types) from [CATransition Class Reference](https://developer.apple.com/library/IOS/documentation/GraphicsImaging/Reference/CATransition_class/Introduction/Introduction.html)) which could get your app rejected from App Store (I mean could as there is no explicit documentation or reference about apps being rejected due to Core Animation transactions). There are some [alternatives to perform these kind of animations using openGL](https://web.archive.org/web/20120622232021/http://www.aderstedtsoftware.com/users/erik/weblog/c7cb9/), for example, but this is not the focus right now.

## Besides UINavigationController transition

I believe you noticed that the transitions I showed were all `UIView` transitions, which means they could all be used to animate `UIView`, regardless of an UIViewController.

A good example of these flip transitions being used for `UIView`s only is inside of [Google Places's App](https://web.archive.org/web/20130525075242/https://itunes.apple.com/us/app/google-places/id406513617?mt=8) when you tap to change the places view mode from map to list (and vice-versa)

![google-placs-app](/images/2012-05-10-ios-uiview-transition-effects/googleplacesapp.png)

---

Originally posted by me at [http://i.ndigo.com.br/2012/05/ios-uiview-transition-effects/](https://web.archive.org/web/20130727085842/http://i.ndigo.com.br/2012/05/ios-uiview-transition-effects/)