text:
package analysisservices

// Copyright (c) Microsoft and contributors.  All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//
// See the License for the specific language governing permissions and
// limitations under the License.
//
// Code generated by Microsoft (R) AutoRest Code Generator.
// Changes may cause incorrect behavior and will be lost if the code is regenerated.

import (
	"context"
	"encoding/json"
	"github.com/Azure/go-autorest/autorest"
	"github.com/Azure/go-autorest/autorest/azure"
	"github.com/Azure/go-autorest/autorest/to"
	"github.com/Azure/go-autorest/tracing"
	"net/http"
)

// The package's fully qualified name.
const fqdn = "github.com/Azure/azure-sdk-for-go/services/analysisservices/mgmt/2017-08-01/analysisservices"

// ConnectionMode enumerates the values for connection mode.
type ConnectionMode string

const (
	// All ...
	All ConnectionMode = "All"
	// ReadOnly ...
	ReadOnly ConnectionMode = "ReadOnly"
)

// PossibleConnectionModeValues returns an array of possible values for the ConnectionMode const type.
func PossibleConnectionModeValues() []ConnectionMode {
	return []ConnectionMode{All, ReadOnly}
}

// ProvisioningState enumerates the values for provisioning state.
type ProvisioningState string

const (
	// Deleting ...
	Deleting ProvisioningState = "Deleting"
	// Failed ...
	Failed ProvisioningState = "Failed"
	// Paused ...
	Paused ProvisioningState = "Paused"
	// Pausing ...
	Pausing ProvisioningState = "Pausing"
	// Preparing ...
	Preparing ProvisioningState = "Preparing"
	// Provisioning ...
	Provisioning ProvisioningState = "Provisioning"
	// Resuming ...
	Resuming ProvisioningState = "Resuming"
	// Scaling ...
	Scaling ProvisioningState = "Scaling"
	// Succeeded ...
	Succeeded ProvisioningState = "Succeeded"
	// Suspended ...
	Suspended ProvisioningState = "Suspended"
	// Suspending ...
	Suspending ProvisioningState = "Suspending"
	// Updating ...
	Updating ProvisioningState = "Updating"
)

// PossibleProvisioningStateValues returns an array of possible values for the ProvisioningState const type.
func PossibleProvisioningStateValues() []ProvisioningState {
	return []ProvisioningState{Deleting, Failed, Paused, Pausing, Preparing, Provisioning, Resuming, Scaling, Succeeded, Suspended, Suspending, Updating}
}

// SkuTier enumerates the values for sku tier.
type SkuTier string

const (
	// Basic ...
	Basic SkuTier = "Basic"
	// Development ...
	Development SkuTier = "Development"
	// Standard ...
	Standard SkuTier = "Standard"
)

// PossibleSkuTierValues returns an array of possible values for the SkuTier const type.
func PossibleSkuTierValues() []SkuTier {
	return []SkuTier{Basic, Development, Standard}
}

// State enumerates the values for state.
type State string

const (
	// StateDeleting ...
	StateDeleting State = "Deleting"
	// StateFailed ...
	StateFailed State = "Failed"
	// StatePaused ...
	StatePaused State = "Paused"
	// StatePausing ...
	StatePausing State = "Pausing"
	// StatePreparing ...
	StatePreparing State = "Preparing"
	// StateProvisioning ...
	StateProvisioning State = "Provisioning"
	// StateResuming ...
	StateResuming State = "Resuming"
	// StateScaling ...
	StateScaling State = "Scaling"
	// StateSucceeded ...
	StateSucceeded State = "Succeeded"
	// StateSuspended ...
	StateSuspended State = "Suspended"
	// StateSuspending ...
	StateSuspending State = "Suspending"
	// StateUpdating ...
	StateUpdating State = "Updating"
)

// PossibleStateValues returns an array of possible values for the State const type.
func PossibleStateValues() []State {
	return []State{StateDeleting, StateFailed, StatePaused, StatePausing, StatePreparing, StateProvisioning, StateResuming, StateScaling, StateSucceeded, StateSuspended, StateSuspending, StateUpdating}
}

// Status enumerates the values for status.
type Status string

const (
	// Live ...
	Live Status = "Live"
)

// PossibleStatusValues returns an array of possible values for the Status const type.
func PossibleStatusValues() []Status {
	return []Status{Live}
}

// CheckServerNameAvailabilityParameters details of server name request body.
type CheckServerNameAvailabilityParameters struct {
	// Name - Name for checking availability.
	Name *string `json:"name,omitempty"`
	// Type - The resource type of azure analysis services.
	Type *string `json:"type,omitempty"`
}

// CheckServerNameAvailabilityResult the checking result of server name availability.
type CheckServerNameAvailabilityResult struct {
	autorest.Response `json:"-"`
	// NameAvailable - Indicator of available of the server name.
	NameAvailable *bool `json:"nameAvailable,omitempty"`
	// Reason - The reason of unavailability.
	Reason *string `json:"reason,omitempty"`
	// Message - The detailed message of the request unavailability.
	Message *string `json:"message,omitempty"`
}

// ErrorResponse describes the format of Error response.
type ErrorResponse struct {
	// Code - Error code
	Code *string `json:"code,omitempty"`
	// Message - Error message indicating why the operation failed.
	Message *string `json:"message,omitempty"`
}

// GatewayDetails the gateway details.
type GatewayDetails struct {
	// GatewayResourceID - Gateway resource to be associated with the server.
	GatewayResourceID *string `json:"gatewayResourceId,omitempty"`
	// GatewayObjectID - READ-ONLY; Gateway object id from in the DMTS cluster for the gateway resource.
	GatewayObjectID *string `json:"gatewayObjectId,omitempty"`
	// DmtsClusterURI - READ-ONLY; Uri of the DMTS cluster.
	DmtsClusterURI *string `json:"dmtsClusterUri,omitempty"`
}

// GatewayError detail of gateway errors.
type GatewayError struct {
	// Code - Error code of list gateway.
	Code *string `json:"code,omitempty"`
	// Message - Error message of list gateway.
	Message *string `json:"message,omitempty"`
}

// GatewayListStatusError status of gateway is error.
type GatewayListStatusError struct {
	// Error - Error of the list gateway status.
	Error *GatewayError `json:"error,omitempty"`
}

// GatewayListStatusLive status of gateway is live.
type GatewayListStatusLive struct {
	autorest.Response `json:"-"`
	// Status - Live message of list gateway. Possible values include: 'Live'
	Status Status `json:"status,omitempty"`
}

// IPv4FirewallRule the detail of firewall rule.
type IPv4FirewallRule struct {
	// FirewallRuleName - The rule name.
	FirewallRuleName *string `json:"firewallRuleName,omitempty"`
	// RangeStart - The start range of IPv4.
	RangeStart *string `json:"rangeStart,omitempty"`
	// RangeEnd - The end range of IPv4.
	RangeEnd *string `json:"rangeEnd,omitempty"`
}

// IPv4FirewallSettings an array of firewall rules.
type IPv4FirewallSettings struct {
	// FirewallRules - An array of firewall rules.
	FirewallRules *[]IPv4FirewallRule `json:"firewallRules,omitempty"`
	// EnablePowerBIService - The indicator of enabling PBI service.
	EnablePowerBIService *bool `json:"enablePowerBIService,omitempty"`
}

// Operation a Consumption REST API operation.
type Operation struct {
	// Name - READ-ONLY; Operation name: {provider}/{resource}/{operation}.
	Name *string `json:"name,omitempty"`
	// Display - The object that represents the operation.
	Display *OperationDisplay `json:"display,omitempty"`
}

// OperationDisplay the object that represents the operation.
type OperationDisplay struct {
	// Provider - READ-ONLY; Service provider: Microsoft.Consumption.
	Provider *string `json:"provider,omitempty"`
	// Resource - READ-ONLY; Resource on which the operation is performed: UsageDetail, etc.
	Resource *string `json:"resource,omitempty"`
	// Operation - READ-ONLY; Operation type: Read, write, delete, etc.
	Operation *string `json:"operation,omitempty"`
}

// OperationListResult result of listing consumption operations. It contains a list of operations and a URL
// link to get the next set of results.
type OperationListResult struct {
	autorest.Response `json:"-"`
	// Value - READ-ONLY; List of analysis services operations supported by the Microsoft.AnalysisServices resource provider.
	Value *[]Operation `json:"value,omitempty"`
	// NextLink - READ-ONLY; URL to get the next set of operation list results if there are any.
	NextLink *string `json:"nextLink,omitempty"`
}

// OperationListResultIterator provides access to a complete listing of Operation values.
type OperationListResultIterator struct {
	i    int
	page OperationListResultPage
}

// NextWithContext advances to the next value.  If there was an error making
// the request the iterator does not advance and the error is returned.
func (iter *OperationListResultIterator) NextWithContext(ctx context.Context) (err error) {
	if tracing.IsEnabled() {
		ctx = tracing.StartSpan(ctx, fqdn+"/OperationListResultIterator.NextWithContext")
		defer func() {
			sc := -1
			if iter.Response().Response.Response != nil {
				sc = iter.Response().Response.Response.StatusCode
			}
			tracing.EndSpan(ctx, sc, err)
		}()
	}
	iter.i++
	if iter.i < len(iter.page.Values()) {
		return nil
	}
	err = iter.page.NextWithContext(ctx)
	if err != nil {
		iter.i--
		return err
	}
	iter.i = 0
	return nil
}

// Next advances to the next value.  If there was an error making
// the request the iterator does not advance and the error is returned.
// Deprecated: Use NextWithContext() instead.
func (iter *OperationListResultIterator) Next() error {
	return iter.NextWithContext(context.Background())
}

// NotDone returns true if the enumeration should be started or is not yet complete.
func (iter OperationListResultIterator) NotDone() bool {
	return iter.page.NotDone() && iter.i < len(iter.page.Values())
}

// Response returns the raw server response from the last page request.
func (iter OperationListResultIterator) Response() OperationListResult {
	return iter.page.Response()
}

// Value returns the current value or a zero-initialized value if the
// iterator has advanced beyond the end of the collection.
func (iter OperationListResultIterator) Value() Operation {
	if !iter.page.NotDone() {
		return Operation{}
	}
	return iter.page.Values()[iter.i]
}

// Creates a new instance of the OperationListResultIterator type.
func NewOperationListResultIterator(page OperationListResultPage) OperationListResultIterator {
	return OperationListResultIterator{page: page}
}

// IsEmpty returns true if the ListResult contains no values.
func (olr OperationListResult) IsEmpty() bool {
	return olr.Value == nil || len(*olr.Value) == 0
}

// operationListResultPreparer prepares a request to retrieve the next set of results.
// It returns nil if no more results exist.
func (olr OperationListResult) operationListResultPreparer(ctx context.Context) (*http.Request, error) {
	if olr.NextLink == nil || len(to.String(olr.NextLink)) < 1 {
		return nil, nil
	}
	return autorest.Prepare((&http.Request{}).WithContext(ctx),
		autorest.AsJSON(),
		autorest.AsGet(),
		autorest.WithBaseURL(to.String(olr.NextLink)))
}

// OperationListResultPage contains a page of Operation values.
type OperationListResultPage struct {
	fn  func(context.Context, OperationListResult) (OperationListResult, error)
	olr OperationListResult
}

// NextWithContext advances to the next page of values.  If there was an error making
// the request the page does not advance and the error is returned.
func (page *OperationListResultPage) NextWithContext(ctx context.Context) (err error) {
	if tracing.IsEnabled() {
		ctx = tracing.StartSpan(ctx, fqdn+"/OperationListResultPage.NextWithContext")
		defer func() {
			sc := -1
			if page.Response().Response.Response != nil {
				sc = page.Response().Response.Response.StatusCode
			}
			tracing.EndSpan(ctx, sc, err)
		}()
	}
	next, err := page.fn(ctx, page.olr)
	if err != nil {
		return err
	}
	page.olr = next
	return nil
}

// Next advances to the next page of values.  If there was an error making
// the request the page does not advance and the error is returned.
// Deprecated: Use NextWithContext() instead.
func (page *OperationListResultPage) Next() error {
	return page.NextWithContext(context.Background())
}

// NotDone returns true if the page enumeration should be started or is not yet complete.
func (page OperationListResultPage) NotDone() bool {
	return !page.olr.IsEmpty()
}

// Response returns the raw server response from the last page request.
func (page OperationListResultPage) Response() OperationListResult {
	return page.olr
}

// Values returns the slice of values for the current page or nil if there are no values.
func (page OperationListResultPage) Values() []Operation {
	if page.olr.IsEmpty() {
		return nil
	}
	return *page.olr.Value
}

// Creates a new instance of the OperationListResultPage type.
func NewOperationListResultPage(getNextPage func(context.Context, OperationListResult) (OperationListResult, error)) OperationListResultPage {
	return OperationListResultPage{fn: getNextPage}
}

// OperationStatus the status of operation.
type OperationStatus struct {
	autorest.Response `json:"-"`
	// ID - The operation Id.
	ID *string `json:"id,omitempty"`
	// Name - The operation name.
	Name *string `json:"name,omitempty"`
	// StartTime - The start time of the operation.
	StartTime *string `json:"startTime,omitempty"`
	// EndTime - The end time of the operation.
	EndTime *string `json:"endTime,omitempty"`
	// Status - The status of the operation.
	Status *string `json:"status,omitempty"`
	// Error - The error detail of the operation if any.
	Error *ErrorResponse `json:"error,omitempty"`
}

// Resource represents an instance of an Analysis Services resource.
type Resource struct {
	// ID - READ-ONLY; An identifier that represents the Analysis Services resource.
	ID *string `json:"id,omitempty"`
	// Name - READ-ONLY; The name of the Analysis Services resource.
	Name *string `json:"name,omitempty"`
	// Type - READ-ONLY; The type of the Analysis Services resource.
	Type *string `json:"type,omitempty"`
	// Location - Location of the Analysis Services resource.
	Location *string `json:"location,omitempty"`
	// Sku - The SKU of the Analysis Services resource.
	Sku *ResourceSku `json:"sku,omitempty"`
	// Tags - Key-value pairs of additional resource provisioning properties.
	Tags map[string]*string `json:"tags"`
}

// MarshalJSON is the custom marshaler for Resource.
func (r Resource) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	if r.Location != nil {
		objectMap["location"] = r.Location
	}
	if r.Sku != nil {
		objectMap["sku"] = r.Sku
	}
	if r.Tags != nil {
		objectMap["tags"] = r.Tags
	}
	return json.Marshal(objectMap)
}

// ResourceSku represents the SKU name and Azure pricing tier for Analysis Services resource.
type ResourceSku struct {
	// Name - Name of the SKU level.
	Name *string `json:"name,omitempty"`
	// Tier - The name of the Azure pricing tier to which the SKU applies. Possible values include: 'Development', 'Basic', 'Standard'
	Tier SkuTier `json:"tier,omitempty"`
	// Capacity - The number of instances in the read only query pool.
	Capacity *int32 `json:"capacity,omitempty"`
}

// Server represents an instance of an Analysis Services resource.
type Server struct {
	autorest.Response `json:"-"`
	// ServerProperties - Properties of the provision operation request.
	*ServerProperties `json:"properties,omitempty"`
	// ID - READ-ONLY; An identifier that represents the Analysis Services resource.
	ID *string `json:"id,omitempty"`
	// Name - READ-ONLY; The name of the Analysis Services resource.
	Name *string `json:"name,omitempty"`
	// Type - READ-ONLY; The type of the Analysis Services resource.
	Type *string `json:"type,omitempty"`
	// Location - Location of the Analysis Services resource.
	Location *string `json:"location,omitempty"`
	// Sku - The SKU of the Analysis Services resource.
	Sku *ResourceSku `json:"sku,omitempty"`
	// Tags - Key-value pairs of additional resource provisioning properties.
	Tags map[string]*string `json:"tags"`
}

// MarshalJSON is the custom marshaler for Server.
func (s Server) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	if s.ServerProperties != nil {
		objectMap["properties"] = s.ServerProperties
	}
	if s.Location != nil {
		objectMap["location"] = s.Location
	}
	if s.Sku != nil {
		objectMap["sku"] = s.Sku
	}
	if s.Tags != nil {
		objectMap["tags"] = s.Tags
	}
	return json.Marshal(objectMap)
}

// UnmarshalJSON is the custom unmarshaler for Server struct.
func (s *Server) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "properties":
			if v != nil {
				var serverProperties ServerProperties
				err = json.Unmarshal(*v, &serverProperties)
				if err != nil {
					return err
				}
				s.ServerProperties = &serverProperties
			}
		case "id":
			if v != nil {
				var ID string
				err = json.Unmarshal(*v, &ID)
				if err != nil {
					return err
				}
				s.ID = &ID
			}
		case "name":
			if v != nil {
				var name string
				err = json.Unmarshal(*v, &name)
				if err != nil {
					return err
				}
				s.Name = &name
			}
		case "type":
			if v != nil {
				var typeVar string
				err = json.Unmarshal(*v, &typeVar)
				if err != nil {
					return err
				}
				s.Type = &typeVar
			}
		case "location":
			if v != nil {
				var location string
				err = json.Unmarshal(*v, &location)
				if err != nil {
					return err
				}
				s.Location = &location
			}
		case "sku":
			if v != nil {
				var sku ResourceSku
				err = json.Unmarshal(*v, &sku)
				if err != nil {
					return err
				}
				s.Sku = &sku
			}
		case "tags":
			if v != nil {
				var tags map[string]*string
				err = json.Unmarshal(*v, &tags)
				if err != nil {
					return err
				}
				s.Tags = tags
			}
		}
	}

	return nil
}

// ServerAdministrators an array of administrator user identities.
type ServerAdministrators struct {
	// Members - An array of administrator user identities.
	Members *[]string `json:"members,omitempty"`
}

// ServerMutableProperties an object that represents a set of mutable Analysis Services resource
// properties.
type ServerMutableProperties struct {
	// AsAdministrators - A collection of AS server administrators
	AsAdministrators *ServerAdministrators `json:"asAdministrators,omitempty"`
	// BackupBlobContainerURI - The SAS container URI to the backup container.
	BackupBlobContainerURI *string `json:"backupBlobContainerUri,omitempty"`
	// GatewayDetails - The gateway details configured for the AS server.
	GatewayDetails *GatewayDetails `json:"gatewayDetails,omitempty"`
	// IPV4FirewallSettings - The firewall settings for the AS server.
	IPV4FirewallSettings *IPv4FirewallSettings `json:"ipV4FirewallSettings,omitempty"`
	// QuerypoolConnectionMode - How the read-write server's participation in the query pool is controlled.
It can have the following values:

readOnly - indicates that the read-write server is intended not to participate in query operations

all - indicates that the read-write server can participate in query operations

Specifying readOnly when capacity is 1 results in error. Possible values include: 'All', 'ReadOnly'
	QuerypoolConnectionMode ConnectionMode `json:"querypoolConnectionMode,omitempty"`
}

// ServerProperties properties of Analysis Services resource.
type ServerProperties struct {
	// State - READ-ONLY; The current state of Analysis Services resource. The state is to indicate more states outside of resource provisioning. Possible values include: 'StateDeleting', 'StateSucceeded', 'StateFailed', 'StatePaused', 'StateSuspended', 'StateProvisioning', 'StateUpdating', 'StateSuspending', 'StatePausing', 'StateResuming', 'StatePreparing', 'StateScaling'
	State State `json:"state,omitempty"`
	// ProvisioningState - READ-ONLY; The current deployment state of Analysis Services resource. The provisioningState is to indicate states for resource provisioning. Possible values include: 'Deleting', 'Succeeded', 'Failed', 'Paused', 'Suspended', 'Provisioning', 'Updating', 'Suspending', 'Pausing', 'Resuming', 'Preparing', 'Scaling'
	ProvisioningState ProvisioningState `json:"provisioningState,omitempty"`
	// ServerFullName - READ-ONLY; The full name of the Analysis Services resource.
	ServerFullName *string `json:"serverFullName,omitempty"`
	// AsAdministrators - A collection of AS server administrators
	AsAdministrators *ServerAdministrators `json:"asAdministrators,omitempty"`
	// BackupBlobContainerURI - The SAS container URI to the backup container.
	BackupBlobContainerURI *string `json:"backupBlobContainerUri,omitempty"`
	// GatewayDetails - The gateway details configured for the AS server.
	GatewayDetails *GatewayDetails `json:"gatewayDetails,omitempty"`
	// IPV4FirewallSettings - The firewall settings for the AS server.
	IPV4FirewallSettings *IPv4FirewallSettings `json:"ipV4FirewallSettings,omitempty"`
	// QuerypoolConnectionMode - How the read-write server's participation in the query pool is controlled.
It can have the following values:

readOnly - indicates that the read-write server is intended not to participate in query operations

all - indicates that the read-write server can participate in query operations

Specifying readOnly when capacity is 1 results in error. Possible values include: 'All', 'ReadOnly'
	QuerypoolConnectionMode ConnectionMode `json:"querypoolConnectionMode,omitempty"`
}

// Servers an array of Analysis Services resources.
type Servers struct {
	autorest.Response `json:"-"`
	// Value - An array of Analysis Services resources.
	Value *[]Server `json:"value,omitempty"`
}

// ServersCreateFuture an abstraction for monitoring and retrieving the results of a long-running
// operation.
type ServersCreateFuture struct {
	azure.Future
}

// Result returns the result of the asynchronous operation.
// If the operation has not completed it will return an error.
func (future *ServersCreateFuture) Result(client ServersClient) (s Server, err error) {
	var done bool
	done, err = future.DoneWithContext(context.Background(), client)
	if err != nil {
		err = autorest.NewErrorWithError(err, "analysisservices.ServersCreateFuture", "Result", future.Response(), "Polling failure")
		return
	}
	if !done {
		err = azure.NewAsyncOpIncompleteError("analysisservices.ServersCreateFuture")
		return
	}
	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
	if s.Response.Response, err = future.GetResult(sender); err == nil && s.Response.Response.StatusCode != http.StatusNoContent {
		s, err = client.CreateResponder(s.Response.Response)
		if err != nil {
			err = autorest.NewErrorWithError(err, "analysisservices.ServersCreateFuture", "Result", s.Response.Response, "Failure responding to request")
		}
	}
	return
}

// ServersDeleteFuture an abstraction for monitoring and retrieving the results of a long-running
// operation.
type ServersDeleteFuture struct {
	azure.Future
}

// Result returns the result of the asynchronous operation.
// If the operation has not completed it will return an error.
func (future *ServersDeleteFuture) Result(client ServersClient) (ar autorest.Response, err error) {
	var done bool
	done, err = future.DoneWithContext(context.Background(), client)
	if err != nil {
		err = autorest.NewErrorWithError(err, "analysisservices.ServersDeleteFuture", "Result", future.Response(), "Polling failure")
		return
	}
	if !done {
		err = azure.NewAsyncOpIncompleteError("analysisservices.ServersDeleteFuture")
		return
	}
	ar.Response = future.Response()
	return
}

// ServersResumeFuture an abstraction for monitoring and retrieving the results of a long-running
// operation.
type ServersResumeFuture struct {
	azure.Future
}

// Result returns the result of the asynchronous operation.
// If the operation has not completed it will return an error.
func (future *ServersResumeFuture) Result(client ServersClient) (ar autorest.Response, err error) {
	var done bool
	done, err = future.DoneWithContext(context.Background(), client)
	if err != nil {
		err = autorest.NewErrorWithError(err, "analysisservices.ServersResumeFuture", "Result", future.Response(), "Polling failure")
		return
	}
	if !done {
		err = azure.NewAsyncOpIncompleteError("analysisservices.ServersResumeFuture")
		return
	}
	ar.Response = future.Response()
	return
}

// ServersSuspendFuture an abstraction for monitoring and retrieving the results of a long-running
// operation.
type ServersSuspendFuture struct {
	azure.Future
}

// Result returns the result of the asynchronous operation.
// If the operation has not completed it will return an error.
func (future *ServersSuspendFuture) Result(client ServersClient) (ar autorest.Response, err error) {
	var done bool
	done, err = future.DoneWithContext(context.Background(), client)
	if err != nil {
		err = autorest.NewErrorWithError(err, "analysisservices.ServersSuspendFuture", "Result", future.Response(), "Polling failure")
		return
	}
	if !done {
		err = azure.NewAsyncOpIncompleteError("analysisservices.ServersSuspendFuture")
		return
	}
	ar.Response = future.Response()
	return
}

// ServersUpdateFuture an abstraction for monitoring and retrieving the results of a long-running
// operation.
type ServersUpdateFuture struct {
	azure.Future
}

// Result returns the result of the asynchronous operation.
// If the operation has not completed it will return an error.
func (future *ServersUpdateFuture) Result(client ServersClient) (s Server, err error) {
	var done bool
	done, err = future.DoneWithContext(context.Background(), client)
	if err != nil {
		err = autorest.NewErrorWithError(err, "analysisservices.ServersUpdateFuture", "Result", future.Response(), "Polling failure")
		return
	}
	if !done {
		err = azure.NewAsyncOpIncompleteError("analysisservices.ServersUpdateFuture")
		return
	}
	sender := autorest.DecorateSender(client, autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
	if s.Response.Response, err = future.GetResult(sender); err == nil && s.Response.Response.StatusCode != http.StatusNoContent {
		s, err = client.UpdateResponder(s.Response.Response)
		if err != nil {
			err = autorest.NewErrorWithError(err, "analysisservices.ServersUpdateFuture", "Result", s.Response.Response, "Failure responding to request")
		}
	}
	return
}

// ServerUpdateParameters provision request specification
type ServerUpdateParameters struct {
	// Sku - The SKU of the Analysis Services resource.
	Sku *ResourceSku `json:"sku,omitempty"`
	// Tags - Key-value pairs of additional provisioning properties.
	Tags map[string]*string `json:"tags"`
	// ServerMutableProperties - Properties of the provision operation request.
	*ServerMutableProperties `json:"properties,omitempty"`
}

// MarshalJSON is the custom marshaler for ServerUpdateParameters.
func (sup ServerUpdateParameters) MarshalJSON() ([]byte, error) {
	objectMap := make(map[string]interface{})
	if sup.Sku != nil {
		objectMap["sku"] = sup.Sku
	}
	if sup.Tags != nil {
		objectMap["tags"] = sup.Tags
	}
	if sup.ServerMutableProperties != nil {
		objectMap["properties"] = sup.ServerMutableProperties
	}
	return json.Marshal(objectMap)
}

// UnmarshalJSON is the custom unmarshaler for ServerUpdateParameters struct.
func (sup *ServerUpdateParameters) UnmarshalJSON(body []byte) error {
	var m map[string]*json.RawMessage
	err := json.Unmarshal(body, &m)
	if err != nil {
		return err
	}
	for k, v := range m {
		switch k {
		case "sku":
			if v != nil {
				var sku ResourceSku
				err = json.Unmarshal(*v, &sku)
				if err != nil {
					return err
				}
				sup.Sku = &sku
			}
		case "tags":
			if v != nil {
				var tags map[string]*string
				err = json.Unmarshal(*v, &tags)
				if err != nil {
					return err
				}
				sup.Tags = tags
			}
		case "properties":
			if v != nil {
				var serverMutableProperties ServerMutableProperties
				err = json.Unmarshal(*v, &serverMutableProperties)
				if err != nil {
					return err
				}
				sup.ServerMutableProperties = &serverMutableProperties
			}
		}
	}

	return nil
}

// SkuDetailsForExistingResource an object that represents SKU details for existing resources.
type SkuDetailsForExistingResource struct {
	// Sku - The SKU in SKU details for existing resources.
	Sku *ResourceSku `json:"sku,omitempty"`
}

// SkuEnumerationForExistingResourceResult an object that represents enumerating SKUs for existing
// resources.
type SkuEnumerationForExistingResourceResult struct {
	autorest.Response `json:"-"`
	// Value - The collection of available SKUs for existing resources.
	Value *[]SkuDetailsForExistingResource `json:"value,omitempty"`
}

// SkuEnumerationForNewResourceResult an object that represents enumerating SKUs for new resources.
type SkuEnumerationForNewResourceResult struct {
	autorest.Response `json:"-"`
	// Value - The collection of available SKUs for new resources.
	Value *[]ResourceSku `json:"value,omitempty"`
}

redpajama_set_name: RedPajamaGithub


PRESS PHOTO BY DON HERB Taylor O'Brien's second-half goal got the Hornets within five goals of Parkland in Saturday's loss to the Trojans.
Saturday's girls' lacrosse matchup was a tale of two halves for Emmaus. Unfortunately, the Hornets dug themselves into a hole they could not fully crawl out of.
Despite Emmaus scoring the first three goals of the second half, Parkland's lead was too much to overcome. The Trojans (4-3 overall; 3-0 in EPC) scored the next four to regain control and cruise to an 18-8 victory at Parkland High School.
The Hornets' start is one that Betz couldn't have imagined. Parkland's Morgan Hurd scored four of her game-high five goals in the Trojans' 9-0 offensive avalanche out of the gate. And Parkland led 11-1 with just under two minutes remaining in the first half.
But as the half started to wind down, the Hornets (4-2, 2-1) made their move. Grace Hall and Kaitlyn Csensits each scored goals in the final 10 seconds of the half to get the Hornets within 11-3.
The momentum rolled over into the second half. Hall and Csensits both scored again soon after intermission, their goals coming 24 seconds apart that cut Parkland's lead to 11-5. Taylor O'Brien then stole a ball from a Trojan midfielder and scored to make it an 11-6 deficit.
"I think we scared them there in the beginning of that second half because we were trying to get back in that game," Betz said. "We definitely made some adjustments on both ends of the field for the second half, which I felt worked well, and at least we know that going into the second game against them this season.
Parkland won 18 of the 25 faceoffs, but O'Brien was able to win a number of those in the second half. It resulted in Emmaus's attack striking early and often.
But the Hornets' momentum was short lived. Parkland got on the board after 10 minutes of scoreless play in the second half when Kaz Kennedy ripped a shot by goalie Chloe Gerhard. Emily Leiby (four goals) then scored about three minutes later to push the Trojans' lead to 13-6.


text:
import sys, os
from .html_to_telegraph import TelegraphPoster

if len(sys.argv) > 1:
    t = TelegraphPoster()
    params = sys.argv[1:]
    t.create_api_token(*params)

    with open('.env', 'a',) as f:
        f.write('\n\nTELEGRAPH_ACCESS_TOKEN=%s' % t.access_token)

    print("Access Token: {access_token}\n"
          "Account Name: {short_name}\n"
          "Author name: {author_name}\n"
          "Author url: {author_url}\n"
          "Authorization url: {auth_url}\n"
          "File .env generated".format(**t.account)
    )
else:
    print('Usage: '
          'Account Name (required)'
          'Author name (optional)'
          'Author url (optional)'
    )


The LD1117AV33 is a low drop voltage regulator able to provide up to 1A of output current.
The LD1117A33 is a low drop voltage regulator able to provide up to 1A of output current at a 3.3v fixed voltage.
High efficiency is assured by an NPN pass transistor. Only a very common 10 μF minimum capacitor is needed for stability. Chip trimming allows the regulator to reach a very tight output voltage tolerance, within ± 2% at 25 °C.
To use the regulator connect a voltage of between 4.45 and 10V to the input terminal and 3.3V will be provided on the output terminal.
A heatshink is recomended when using over 500mA of current.


text:
2022-23 School Year Free and Reduced-Price Meal Policy Announced
News | Date Posted: Monday, August 22, 2022
The Delaware Department of Education announces the U.S. Department of Agriculture policy for free and reduced-price meals for children unable to pay the full price for meals served under the National School Lunch Program (NSLP), School Breakfast Program (SBP), and After School Snack Program (ASSP). Each participating school and its administrative office have a copy of the policy, which may be reviewed by any interested party.
In School Year 2022-2023, schools will be returning to normal NSLP, SBP and ASSP operations and will be collecting free or reduced-price meal eligibility applications, unless the school elects to participate in the Community Eligibility Provision (CEP).
Meal Benefit Forms (MBFs) will be sent home with a letter to parents or guardians. To apply for free or reduced-price meals, households should fill out the MBF for their household and return it to the school. The information provided on the MBF will be used for the purpose of determining eligibility and may be verified at any time during the school year by program officials. Information on the MBF may not be used for any other purpose unless consent is granted by parent/guardian.
For program officials to determine eligibility, households receiving Supplemental Nutrition Assistance Program (SNAP) benefits and/or Delaware Temporary Assistance for Needy Families (DE-TANF) must list the child's name, their SNAP and/or DE-TANF case number, and provide a signature and name of an adult household member. Households not receiving SNAP and/or DE-TANF must list: names of all household members; the amount of the gross income for each household member received last month; the income source and how often received; the signature of an adult household member; and that adult's last four digits of social security number, or the word "none" or "No Social Security Number" box marked if the adult does not have a social security number. MBFs may be submitted at any time during the school year.
Under the provisions of the free and reduced-price policy, the school nutrition services supervisor will review MBFs and determine eligibility. Parents or guardians dissatisfied with the ruling of the official may discuss the decision with the determining official on an informal basis. Parents or guardians wishing to make a formal appeal may make a request either orally or in writing to the administrative office for a hearing on the decision.
Children who are enrolled in Head Start, or are homeless, migrant, runaway or in foster care are eligible for free school meal benefits. In certain instances, children receiving WIC may also be eligible. Parents or guardians wishing to apply should follow the instructions on the MBF or contact their school for more information.
Households may report changes or reapply for meal benefits anytime during the school year. The information provided by the household is confidential and will be used only for purposes of determining eligibility and verifying data.
In accordance with federal civil rights law and U.S. Department of Agriculture (USDA) civil rights regulations and policies, this institution is prohibited from discriminating on the basis of race, color, national origin, sex (including gender identity and sexual orientation), disability, age, or reprisal or retaliation for prior civil rights activity.
Program information may be made available in languages other than English. Persons with disabilities who require alternative means of communication to obtain program information (e.g., Braille, large print, audiotape, American Sign Language), should contact the responsible state or local agency that administers the program or USDA's TARGET Center at (202) 720-2600 (voice and TTY) or contact USDA through the Federal Relay Service at (800) 877-8339.
To file a program discrimination complaint, a Complainant should complete a Form AD-3027, USDA Program Discrimination Complaint Form which can be obtained online at: https://www.usda.gov/sites/default/files/documents/USDA-OASCR%20P-Complaint-Form-0508-0002-508-11-28-17Fax2Mail.pdf, from any USDA office, by calling (866) 632-9992, or by writing a letter addressed to USDA. The letter must contain the complainant's name, address, telephone number, and a written description of the alleged discriminatory action in sufficient detail to inform the Assistant Secretary for Civil Rights (ASCR) about the nature and date of an alleged civil rights violation. The completed AD-3027 form or letter must be submitted to USDA by:
Office of the Assistant Secretary for Civil Rights
1400 Independence Avenue, SW
Washington, D.C. 20250-9410; or
(833) 256-1665 or (202) 690-7442; or
Program.Intake@usda.gov
Effective Date: July 1, 2022 – June 30, 2023
These are the income scales used by Child Nutrition Programs to determine eligibility for free and reduced-price meals.
Reduced Meals – 185% Free Meals – 130%
Monthly Twice
Every two weeks
1 $25,142 $2,096 $1,048 $967 $484 $17,667 $1,473 $737 $680 $340
2 $33,874 $2,823 $1,412 $1,303 $652 $23,803 $1,984 $992 $916 $458
3 $42,606 $3,551 $1,776 $1,639 $820 $29,939 $2,495 $1,248 $1,152 $576
5 $60,070 $5,006 $2,503 $2,311 $1,156 $42,211 $3,518 $1,759 $1,624 $812
7 $77,534 $6,462 $3,231 $2,983 $1,492 $54,483 $4,541 $2,271 $2,096 $1,048
For each additional household member, add:
Media contact: Alison May, alison.may@doe.k12.de.us, 302-735-4006
Related Topics: breakfast, Delaware, education, free, lunch, meals, reduced, school

redpajama_set_name: RedPajamaCommonCrawl


Topic "FBI" | Fight Back!
A well-known Iranian journalist, Marzieh Hashemi, has been jailed by the FBI. Hashemi is an anchor on Iran's English language Press TV and has interviewed many progressive U.S. activists. According to credible reports, Hashemi was taken into custody at the Saint Louis, Missouri area's Louis Lambert International Airport on January 13. The FBI has since moved her to a detention facility near Washington DC.
Today, Sept. 24, is the seventh anniversary of the 2010 FBI raids targeting 7 homes of anti-war, international solidarity and Palestinian-American activists.
On the morning of July 5, Los Angeles activist Jared Hamil received repeated phone calls from FBI Special Agent A. Brett Fears.
After a few days of preliminary motions and jury selection, opening arguments were presented on May 11 at the trial of three young local Somali men.
More than 100 people came to the Minneapolis Federal Courts Building to support three Muslim youth from the Somali community charged with conspiring to provide material support to ISIL and to commit murder abroad.
Fight Back News Service is circulating the following Oct. 17 statement from Scott Williams. We remind all progressive activists to not speak with the FBI.


text:
Jhene Aiko Tupac Cover
Jhene Aiko releases an acoustic cover of 2Pac's 'Keep Your Head Up.' Jhene Aiko's love for Tupac has been well noted in the past. She's been.
25 Aug - 2 min Peep Jhene Aiko 'Covers Tupac's 'Keep Ya Head Up'' Video, the latest visual from. Stream Jhene Aiko - Keep Ya Head Up (2Pac Cover) by from desktop or your mobile device. Jhene Aiko has paid homage to Tupac with a soulful cover of his classic single ' Keep Ya Head Up'. The R&B singer, who recently toured the.
Some say the blacker the berry, the sweeter the juice I say the darker the flesh, then the deeper the roots I give a holla to my sisters on welfare. If Tupac was still here with us, today would've been his 44th birthday. To pay tribute to Tupac's life and legacy, Cali singer Jhene Aiko decided to recreate classic. Jhene Aiko gives Tupac's classic 'Keep Ya Head Up' an R&B makeover. The singer took on the song, accompanied by an.
From Jhene Aiko to Justin Bieber, watch these brilliant Tupac covers. The young and talented singer Jhene Aiko sings a cover of Tupac for Rap-Up Sessions. Aiko has both an EP and an album in the works for. 19 Jul - 2 min The talented Jhene Aiko delivers a dope vocal cover of the late Tupac's "Keep Ya Head Up.
Jhene Aiko shocked her social media followers earlier Friday morning (Feb. 9), after she told them a vivid story of when she and Tupac recently.
Jhene Aiko paid homage to Tupac Shakur on what would have been the the cover of his epic double-album, All Eyez On Me, shown above. Tupac Shakur once asked, "How long will they mourn me?" Today (Sept. 13) marks 20 years since the influential rapper's death and he's still. Watch a few of today's hottest artists pay homage to Tupac with live covers of their favorite songs by Pac. 1. Jhene Aiko – Keep Ya Head Up.
4 Noteworthy Covers of Songs by Tupac Shakur. STATUS June 13, 0 0 " Keep Ya Head Up" – Jhene Aiko. Our October cover star gave a soulful.
Last week, Jhene Aiko performed some new material for Rap-Up Sessions with a cut called "Bed Peace." Then the petite singer whipped out a.
19 Jul - 2 min There was many people paying tribute to the late Tupac Shakur today. Jhene Aiko went on. On Tupac Shakur's 44th birthday Jhene Aiko recreates iconic Tupac photos and covers her favorite song of his, "Keep Ya Head Up.". Watch Jhene Aiko cover Tupac's classic 'Keep Yah Head Up' for Rap Up Sessions.
Capital XTRAVerified account. @CapitalXTRA. Playing Hip Hop, R&B and more across the UK on Digital Radio, on / on FM in London, on mobile and.
jhene Jhene Aiko - "Keep Ya Head Up" (Tupac Cover). First off, Happy Birthday Tupac! Jhene Aiko's photos paying homage to the Hip Hop.
19 Jul - 2 min With her 'Sail Out' EP coming in August, and her newfound chart success thanks to Big Sean. Stream jhene aiko keep ya head up 2pac cover by maya. To start this download lagu you need to click on download button. Play along with guitar, ukulele. Along with her in-studio debut of "Bad Piece," Jhene Aiko performed a cover of 2Pac's hit single, "Keep Ya Head Up" for Rap-Up Sessions.
Another day, another artist in the Spotify studios. This time we have the angelic Jhene Aiko covering 2Pac's beloved "Keep Your Head Up". Jhene does a. TakeItBackTuesday: #HBD2Pac Jhene Aiko Covers 2pac's "Keep Ya Head Up". 10 Times Artists Covered a 2Pac Song Snoop Dogg Covers "2 of Amerikaz Most Wanted". 7 Jhene Aiko Covers "Keep Ya Head Up". 9.
5 years ago. Jhene Aiko Covers Tupac's 'Keep Ya Head Up'. Jhene Aiko gives Tupac's classic 'Keep Ya Head Up' an R&B makeover. Sowmya Krishnamurthy. In Memory and celebration of Tupac's life and legacy, (today Pac would have turned 44) Jhene Aiko shared her thoughts with MTV about his. Musician Jhene Aiko pays tribute to the late Tupac Shakur with a series of images in homage to a number of his record covers.
Head, Tupac's, Get all the Latest news, Breaking headlines and Top stories, photos & video in real time about Rap-Up.
19 Jul - 2 min Here's another video from Jhene Aiko's Rap-Up session. Watch her perform an acoustic.
On what would have been his 44th birthday, Jhene Aiko pays tribute to Tupac through photos. Jhene Aiko paid tribute to her favorite rapper today. Jhene's love for Tupac shows through in her concerts, where she routinely covers "Keep. Jhene Aiko Recreates Tupac Greatest Hits Cover Greatest Hits album cover and his gaze from his , All Eyez On Me album cover.
This past weekend, Def Jam/Atrium newest signee Jhene Aiko held her first live She also performed a cover of Tupac's 'Keep Your Head Up'.
Jhene Aiko – a diehard Tupac fan - teamed up with photographer Danny Williams to recreate three of the rapper's most iconic photos including the album covers.
73 :: 74 :: 75 :: 76 :: 77 :: 78 :: 79 :: 80 :: 81 :: 82 :: 83 :: 84 :: 85 :: 86 :: 87 :: 88 :: 89 :: 90 :: 91 :: 92 :: 93 :: 94 :: 95 :: 96 :: 97 :: 98 :: 99 :: 100 :: 101 :: 102 :: 103 :: 104 :: 105 :: 106 :: 107 :: 108 :: 109 :: 110 :: 111 :: 112


Aliens building the Pyramids, they also dropped into Roswell. Kennedy was assassinated by the FBI.
The Moon landings were filmed by Kubrick. Aids was created in a Laboratory. Man-made global warming is as fake as Iraq's Weapons of Mass Destruction. NASA is planning a false alien invasion of planet earth.
Michael Jackson, Monroe and Princess Diana were murdered, Elvis Presley faked his own death, Paul McCartney was replaced by a double, and hide and seek world champion Osama Bin Laden died 7 years before he was shot by the Americano's, and all this is taking place on a flat earth.
The problem with examining any conspiracy theory is you enter an intricate labyrinth of erroneous information, distortions and downright dishonesty. Often intermingled with small truths, therefore if you venture to question it, you are guaranteed to encounter some passionate characters, so convinced of its ethnicity they cannot consider studying its authenticity.
Of course, the perfect move to cover-up a conspiracy would be to create multiple narratives about the subject while adding small inconsistencies. Toss in a few inaccurate facts - so it can be ridiculed, and voila the citizens you are actually hiding it from will discredit it themselves!
Here's a question you must ask yourself; what would you do if you found proof of a conspiracy?
Surely knowing such information could put your life in mortal danger, probably your family and others around you too. Is that something you'd want? There are incredibly militant people, and organisations probing and risking their lives to keep us informed of the naughty things going on. However, these are few compared to the amounts of people making up a load-of-crock for fun or more likely to generate some nice income.
If you consider yourself open-minded, chances are you accept some conspiracies have taken place. Open minds enjoy the scent of anarchy...an excellent living space for a good conspiracy theory - by their nature, a conspiracy cannot be conclusively disproved since any evidence contradicting them is dismissed as part of the plot itself!
Throughout history, we humans have sought answers. The problem is we like filling in the blanks - often with mumbo-jumbo. A good conspiracy theory can make conversations more interesting. Although it's not a new thing, remember that story we were force-fed as kids, involving a man in the sky, who is watching everything you do, and he'll decide later if you're allowed into a beautiful place or sent to the scary place...to this day, millions still believe it!
Even if you think conspiracies are paranoid, deranged talk, you must agree something is not quite right with the world. There's a general feeling many truths are being hidden from us.
Are you only seeing the negative things happening in the world?
Are you focusing and getting angry about things which you cannot control?
Are you wasting time watching low-level junk TV?
Are you eating processed food and drinks full of additives?
Are you wasting hours and energy spouting opinions on social media sites?
Are you working hard, just to buy more possessions?
The government suits, those creative media types and sneaky news folk are serving up negative stories for us to swallow on a daily basis. Spoon feeding you vast amounts of trivia, trying to dumb you down. To manipulate you into focusing on the wrong things...and their greatest weapon is to get you involved in their game. To get you gossiping, spreading confusion and getting others involved. Like a global game of paranoid Chinese whispers!
The greatest conspiracy taking place is to make sure you brush aside the essential things in life, misdirecting your attention and ultimately wasting your time.
Try to find another human being who you can share positive vibrations with. Do something creative that you feel passionate about. Travel and experience other cultures. Get inspired and inspire others. Go outside more. Enjoy life.
Life is for living, not for worrying. Be grateful for family, friends and for what you have. Be sure there are many far worse off than you. Most of all laugh as many times a day as possible.
You only have a short time on this funky little planet. Don't waste it! Because before you know it, you will be older then you feel. Don't miss out. Get a move on! Stop reading this and go...life is waiting for you.


text:
by K. Aten
Ash Hayes was failed by the system at the tender age of sixteen and suffered an addiction. As a result she lives her life weighed down by the guilt of her past. To atone for childhood misdeeds, Ash trained as a paramedic after high school and eventually, along with her childhood best friend Derek, became a firefighter with the Detroit fire department. Friend, confidant, brother, Derek has been her light in an otherwise dark life. When tragedy strikes on the job, injury and a forced leave from the department are the least of her concerns. Suffering from even more guilt and depression after the loss of her two closest friends, Ash is set adrift in a sea of pain.
When Mia Thomas buys the house next door, Ash finds friendship in the most unlikely of places. It's Mia's nature to help and to heal. Many would say she has a knack for finding the broken ones and leading them into the light. But Ash's secret still lives deep inside her. Before the firefighter can even think of a future, she has to amend her past. Like the phoenix of legend, Ash has to burn her fears to the ground before she can be reborn.
File Type Choose a book formatepubmobipdf Clear
Burn it Down - eBook quantity
Burn it Down - Paperback quantity
Publication Date August 1, 2019
Publisher Regal Crest
ISBN 9781619294196e
Cover Designer Acorn Graphics
Be the first to review "Burn it Down – eBook" Cancel reply


The 46-year-old actress Jennifer Garner in a white skirt leaves the Lincoln Center in New York.
The 46-year-old actress Jennifer Garner in a beige pants leaves her hotel in NYC.
The 46-year-old actress Jennifer Garner, who starred as Jenna Rink in "13 Going on 30", in a blue jeans was seen out in NYC.
The 46-year-old actress Jennifer Garner in a gray tracksuit was seen out in Brentwood.
The 46-year-old actress Jennifer Garner, who was married to actor Ben Affleck from 2005 to 2015, in a gray sweater was seen out in Los Angeles.
The 46-year-old actress Jennifer Garner in a blue sneakers was seen out in Los Angeles.
The 46-year-old actress Jennifer Garner, who starred as Jenna Rink in "13 Going on 30", in a black leggings leaves a boxing class in Los Angeles.
The 46-year-old actress Jennifer Garner in a gray blazer grabs some coffee in Los Angeles.
The 46-year-old actress Jennifer Garner, who starred as Jenna Rink in "13 Going on 30", in a gray blazer was seen out in Brentwood.
The 46-year-old actress Jennifer Garner in a gray knit hat was seen out in Brentwood.


text:
|}

Die Tōhoku-Hauptlinie (jap. , Tōhoku-honsen) ist eine Eisenbahnstrecke im Nordosten der japanischen Hauptinsel Honshū und eine der wichtigsten Schienenverkehrswege des Landes. Benannt ist sie nach der Region Tōhoku, die sie in Süd-Nord-Richtung durchquert. Sie hat ihren Ausgangspunkt in Tokio und führt über Saitama, Utsunomiya, Fukushima und Sendai nach Morioka. Dabei erschließt sie die Präfekturen Tokio, Saitama, Tochigi, Fukushima, Miyagi und Iwate. Während der Personenverkehr in die Zuständigkeit von JR East fällt, ist JR Freight für den Güterverkehr zuständig. Ebenfalls zur Tōhoku-Hauptlinie gezählt werden mehrere kurze Parallel- und Zweigstrecken.

Erbaut wurde die über 500 km lange Tōhoku-Hauptlinie in den 1880er Jahren durch die Nippon Tetsudō, Japans erste private Bahngesellschaft. Fast ein Jahrhundert lang war sie die Hauptverkehrsader im Fernverkehr in den Norden, bis zur Eröffnung der größtenteils parallel verlaufenden Schnellfahrstrecke Tōhoku-Shinkansen im Jahr 1982. Einst reichte die Strecke nominell über Morioka hinaus bis nach Aomori an der Nordspitze Honshūs, doch wurde dieser Abschnitt nach der Verlängerung der parallel verlaufenden Schnellfahrstrecke Tōhoku-Shinkansen an zwei eigenständige Bahngesellschaften ausgegliedert.

Dieser Artikel befasst sich mit der Tōhoku-Hauptlinie im Allgemeinen. Der suburbane Abschnitt im Ballungsraum Tokio zwischen dem Bahnhof Tokio und dem Bahnhof Kuroiso trägt die Bezeichnung Utsunomiya-Linie und wird im entsprechenden Artikel beschrieben.

Allgemeine Merkmale

Die in Kapspur (1067 mm) verlegte Tōhoku-Hauptlinie erstreckt sich über eine Entfernung von 535,3 km zwischen den Städten Tokio und Morioka. Hinzu kommen mehrere Neben- und Zweiglinien, die ebenfalls hinzugezählt werden. Es handelt sich dabei um die Verbindung Ueno–Oku–Akabane (7,6 km), die Miyagino-Güterlinie von Nagamachi über den Güterbahnhof Sendai nach Higashi-Sendai (6,6 km), die Rifu-Linie von Iwakiri nach Rifu (4,2 km) sowie um eine Verbindungsstrecke zur Senseki-Linie bei Sendai (0,3 km). Insgesamt werden 142 Bahnhöfe und fünf Güterbahnhöfe bedient. Mit Ausnahme der Rifu-Zweigstrecke und der Senseki-Verbindung sind alle Abschnitte zweigleisig ausgebaut.

Die Strecke besitzt zwei unterschiedliche Bahnstromsysteme, wobei sich die Grenze im Bahnhof Kuroiso in der Gemeinde Nasushiobara befindet. Südlich davon ist die Strecke in Richtung Tokio mit 1500 V Gleichspannung elektrifiziert, nördlich davon mit 20 kV Wechselstrom bei einer Frequenz von 50 Hz. In Kuroiso besteht üblicherweise eine strikte Trennung zwischen beiden Systemen ohne durchgehende Züge. Nur Güterzüge und vereinzelte Sonderfahrten überwinden die Grenze und verkehren mit Zweisystemfahrzeugen.

Der nördlich von Morioka gelegene Teil der Tōhoku-Hauptlinie wird nicht mehr zu dieser gerechnet und verläuft weitgehend parallel zur Schnellfahrstrecke Tōhoku-Shinkansen. JR East übertrug ihn an zwei eigenständige Bahngesellschaften. Die Iwate Ginga Tetsudō ist für die 82,0 km lange Iwate-Galaxy-Bahnlinie zwischen Morioka und Metoki zuständig, die Aoimori Tetsudō für die daran anschließende, 121,9 km lange Aoimori-Bahnlinie zwischen Metoki und Aomori. Bei beiden Unternehmen handelt es sich um Bahngesellschaften des "dritten Sektors", die überwiegend im Besitz der erschlossenen Präfekturen und Gemeinden sind; in deren Auftrag führen sie dort den Nahverkehr durch.

Ursprünglich war der Bahnhof Ueno der offizielle südliche Ausgangspunkt, seit 1925 ist es der Bahnhof Tokio. Dennoch verkehrten auch danach die meisten Züge ab Ueno; vor den 1960er Jahren waren einzelne Züge in Tokio direkt mit der Tōkaidō-Hauptlinie verbunden. Die Gleise der Tōhoku-Hauptlinie zwischen Tokio und Ueno wurden 1973 stillgelegt, um Platz für die Tōhoku-Shinkansen zu schaffen. Danach verkehrten dort nur noch die Nahverkehrszüge der parallel verlaufenden Linien. Diese Situation änderte sich 2015 mit der Eröffnung der Ueno-Tokio-Linie, die zu einem Teil die alten Gleise nutzt und andererseits aufgeständert über der Shinkansen-Trasse verläuft.

Streckenbeschreibung
(Tokio–Kuroiso siehe Utsunomiya-Linie)

Unmittelbar beim Verlassen des Bahnhofs Kuroiso durchfahren die Züge eine Schutzstrecke, die den Übergang vom Gleichstrom- zum Wechselstrom-Abschnitt bildet. Nach der Überquerung des Naka folgt die Nasu-Hochebene. Der anschließende Hügelkamm zwischen den Bergen Nasu-dake und Yamizo-san bildet die nördlich Begrenzung der Region Kantō. Dieses Gebiet ist mit rund 400 Höhenmetern das höchstgelegene an der Tōhoku-Hauptlinie. In Shin-Shirakawa besteht die erste Umsteigemöglichkeit zur Tōhoku-Shinkansen. Danach wendet sich die Strecke kurz nach Osten, um den Abukuma zu überbrücken, bevor sie wieder eine ungefähr nordöstliche Richtung einschlägt. Im Knotenpunkt Kōriyama besteht Anschluss an die Shinkansen, die Ban'etsu-Ostlinie, die Ban'etsu-Westlinie und die Suigun-Linie. Weiterhin dem Tal des Abukuma folgend wird Fukushima erreicht, die Hauptstadt der gleichnamigen Präfektur. Dort kann zur Tōhoku-Shinkansen, zur Yamagata-Shinkansen, zur Ōu-Hauptlinie, zur Abukuma-Express-Linie und zur Iizaka-Linie umgestiegen werden.

Vom Fukushima-Becken aus führt die Strecke bergauf zu einem rund 200 Meter hoch gelegenen Pass in der Nähe des Bahnhofs Kaida, nahe der Grenze zur Präfektur Miyagi. Südöstlich am Zaō-Gebirgsmassiv vorbei führt die Strecke dem Shiraishi-Fluss entlang und trifft in Tsukinoki am Unterlauf des Abukuma wieder auf die Abukuma-Express-Linie. Im nachfolgenden Bahnhof Iwanuma am Rande der Sendai-Ebene mündet die Jōban-Linie ein, beim Natori die Sendai-Flughafenlinie. Kurz nach der Brücke über den Hirose-Fluss zweigt die 6,6 km lange Miyagino-Güterlinie ab, auf welcher der Güterverkehr das Stadtzentrum der Millionenstadt Sendai umfahren kann. Auf Stadtgebiet macht die Tōhoku-Hauptlinie einen kleinen Schwenker nach Westen und erreicht den Bahnhof Sendai, wo Umsteigemöglichkeiten zur Tōhoku-Shinkansen, zur Jōban-Linie, zur Sendai-Flughafenlinie, zur Senseki-Linie, zur Senzan-Linie und zu beiden Linien der U-Bahn Sendai bestehen.

Wieder nach Nordosten verlaufend mündet in Higashi-Sendai die Miyagino-Güterlinie ein und nach Überbrückung des Nanakita erreicht die Tōhoku-Hauptlinie den Bahnhof Iwakiri. Dort zweigt die 4,2 km lange Rifu-Linie nach Rifu ab, die einst dem ursprünglichen Streckenverlauf entsprach, seit 1962 aber nur noch eine Stichstrecke ist. Die neuere Strecke trifft im Stadtgebiet von Shiogama auf die Küste und verläuft entlang des Matsushima-Küstengebirges mehrere Kilometer weit parallel zur Senseki-Linie. Entlang dem östlichen Rand der Omatsuzawa-Hügel wird nun in überwiegend nördlicher Richtung der Bahnhof Kogata erreicht, wo die Ishinomaki-Linie und die Rikuu-Ostlinie abzweigen. Westlich an den Asohidake-Hügeln und östlich an den Chikudate-Hügeln vorbei geht es weiter durch die Kurihara-Ebene und über die Grenze zur Präfektur Iwate nach Ichinoseki, dem Ausgangspunkt der Ōfunato-Linie. Im Kitakami-Tal liegen die Bahnhöfe Kitakami und Hanamaki, wo die Kitakami-Linie und die Kamaishi-Linie abzweigen. Ab Shiwachūō verläuft die Strecke geradlinig neben der Tōhoku-Shinkansen und erreicht schließlich Morioka. An diesem Knotenpunkt bestehen Anschlüsse an die Tōhoku-Shinkansen, die Akita-Shinkansen, die Iwate-Galaxy-Bahnlinie, die Tazawako-Linie und die Yamada-Linie. Einst führte die Tōhoku-Hauptlinie weiter nordwärts in Richtung Aomori, doch dieser Abschnitt wurde an zwei eigenständige Bahngesellschaften übertragen.

Zugangebot

Regionalverkehr
Die Züge des Mittelstreckenverkehrs zwischen Tokio und Kuroiso werden vom Betreiber JR East seit 1990 als Utsunomiya-Linie bezeichnet. Zusammen mit den Zügen der Takasaki-Linie (nach bzw. ab Ōmiya) sind sie betrieblich vom urbanen Nahverkehr getrennt, der von teils parallel verlaufenden Linien übernommen wird. Um die eigentliche Hauptstrecke zu entlasten, fahren die Mittelstreckenzüge zwischen Ueno und Akaben nicht über Tabata, sondern auf einer Nebenlinie via Oku. Den urbanen Nahverkehr übernehmen die Yamanote-Linie, die Keihin-Tōhoku-Linie und die Saikyō-Linie. Auf der Yamanote-Linie wurden auch Mittelstreckenzüge von und zu den Bahnhöfen Ikebukuro und Shinjuku betrieben, die sich 2001 zu Direktverbindungen mit der Tōkaidō-Hauptlinie und der Yokosuka-Linie entwickelten; diese erhielten die Bezeichnung Shōnan-Shinjuku-Linie. Auf kurzen Abschnitten in der Metropolregion Tokio verkehren auch Züge der Chūō-Hauptlinie, der Jōban-Linie und der Musashino-Linie. Mithilfe der Ueno-Tokio-Linie können die Mittelstreckenzüge der Utsunomiya-Linie, der Takasaki-Linie und der Jōban-Linie im Bahnhof Tokio mit jenen der Tōkaidō-Hauptlinie verknüpft werden.

Nördlich von Kuroiso, das am äußersten Rand der Metropolregion liegt, sind die erschlossenen Gegenden ländlich geprägt und teilweise sehr dünn besiedelt, weshalb das Zugangebot im regionalen Personenverkehr dort deutlich geringer ist. Deshalb ist die Tōhoku-Hauptlinie in mehrere Sektionen unterteilt, die unterschiedlich oft und mit verschieden langen Zügen befahren werden. Zwischen Kuroiso und Shin-Shirakawa fahren die Züge je nach Tageszeit ungefähr alle 60 bis 100 Minuten. In einem angenäherten Stundentakt verkehren die Züge von Shin-Shirakawa nach Kōriyama. Zwischen Kōriyama und Fukushima wird ein Stundentakt angeboten, der während der Hauptverkehrszeit auf 30 Minuten verdichtet wird. Morgens und abends verkehren einzelne Züge durchgehend von Shin-Shirakawa nach Fukushima. Üblicherweise im Stundentakt betrieben werden die Züge zwischen Fukushima und Sendai; zusätzliche Züge ab Shiroishi verdichten diesen zu einem angenäherten Halbstundentakt. Hinzu kommen Züge der Abukuma-Express-Linie ab Tsukinoki, der Jōban-Linie ab Iwanuma und der Sendai-Flughafenlinie ab Natori, sodass in den südlichen Vororten Sendais ein dichtes Angebot besteht.

Tagsüber im Stunden- und während der Hauptverkehrszeit im Halbstundentakt verkehren Züge zwischen Sendai und Kogota. Darüber hinaus wird dieser Takt in den nördlichen Vororten Sendais einerseits durch die Rifu-Linie nach Rifu ergänzt, andererseits durch die Direktverbindungen der Senseki-Tōhoku-Linie nach Onagawa, die beide zum Teil die Tōhoku-Hauptlinie mitbenutzen. Der Abschnitt Kogota–Ichinoseki wird in einem angenäherten Stundentakt befahren. Dasselbe trifft auf den Abschnitt Ichinoseki–Morioka zu, morgens und abends werden jedoch zusätzliche Züge ab Kitami eingesetzt. Dem beschleunigten Pendlerverkehr in Richtung Morioka dienen zusätzlich die Eilzüge Kaisoku Aterui ab Mizusawa und Hamayuri ab Hanamaki.

Fern- und Güterverkehr
Einst verkehrten auf der Tōhoku-Hauptlinie zahlreiche Fernverkehrszüge. Mit der Eröffnung des Tōhoku-Shinkansen zwischen Ōmiya und Morioka im Jahr 1982 verlagerte die Japanische Staatsbahn die Fernverbindungen auf den Shinkansen und ersetzte sie durch Mittelstreckenzüge. Es gibt keinen einzigen Personenzug mehr, der die gesamte Strecke befährt, ebenso keine Schnellzüge zwischen Kurihashi und Iwanuma sowie zwischen Sendai und Morioka. Mit der Eröffnung der Hokkaidō-Shinkansen nördlich von Aomori im Jahr 2016 fielen auch die letzten Nachtzüge weg.

Zusätzlich zu den Reisezügen wird die Tōhoku-Hauptlinie auch von zahlreichen Güterzügen der Gesellschaft JR Freight befahren, die den Großraum Tokio mit dem Norden der Hauptinsel Honshū und mit Hokkaidō verbinden. Die Verbindung zwischen dem Güterbahnhöfen Sumidagawa (in Tokio) und Sapporo gilt als "Hauptschlagader des Nordens". Viele Güterzüge fahren weiter über die Tōkaidō-Hauptlinie in die westlichen Regionen Japans sowie über Aomori hinaus durch den Seikan-Tunnel nach Hokkaidō.

Geschichte

Planung und Streckenbau
Nach der Niederschlagung der Satsuma-Rebellion im Jahr 1877 war die Finanzlage des Staates angespannt, weshalb die Regierung beschloss, den staatlichen Eisenbahnbau zunächst auf die Verbindung zwischen Tokio und Kōbe (die heutige Tōkaidō-Hauptlinie) zu beschränken. Weitere Bahnstrecken sollten deshalb von privaten Bahngesellschaften errichtet und betrieben werden. Die erste war die 1881 gegründete Nippon Tetsudō, an der hauptsächlich wohlhabende ehemalige Daimyōs und Samurais beteiligt waren. Sie plante den Bau eines Streckennetzes, das von Tokio aus nordwärts nach Takasaki sowie über Sendai und Morioka bis nach Aomori an der Nordspitze der Hauptinsel Honshū führen sollte. Entsprechende Planungen hatte es bereits 1871 gegeben, konnten aber bisher nicht umgesetzt werden. Da diese Strecken auch für den Staat von hohem Nutzen waren, unterstützte er die Nippon Tetsudō bei der Planung und der Bauausführung, ebenso sicherte er ihr ein Monopol für die erschlossenen Regionen zu.

Ursprünglich war vorgesehen, die Strecke in Shinagawa direkt an die bestehende staatliche Linie Shimbashi–Yokohama anzuschließen und von dort durch das Yamanote-Hügelvorland nach Akabane zu führen. Da die Nippon Tetsudō aber davon ausging, dass diese Streckenführung anspruchsvoller zu bauen wäre, zog sie es vor, Ueno zum Ausgangspunkt zu machen und den Bau der späteren Yamanote-Linie vorerst aufzuschieben. Am 28. Juli 1883 erfolgte die Eröffnung der Strecke Ueno–Kumagaya mit den Zwischenbahnhöfen Ōji, Urawa, Ageo und Kōnosu. Dabei entspricht der Abschnitt zwischen Ueno und dem damals noch nicht existierenden Bahnhof Ōmiya der späteren Tōhoku-Hauptlinie, während der Rest heute einen Teil der Takasaki-Linie bildet. Der Trennungsbahnhof Ōmiya kam am 16. März 1884 hinzu.

Nächste Etappe war die Fertigstellung des Abschnitts von Ōmiya nach Utsunomiya. Da sich der Brückenbau über den Fluss Tone verzögerte, gingen am 16. Juli 1885 zunächst zwei voneinander getrennte Abschnitte in Betrieb: Einerseits zwischen Ōmiya und Kurihashi am Südufer, anderseits zwischen dem provisorischen Bahnhof Nakata am Nordufer und Utsunomiya; dazwischen verkehrte vorübergehend eine Eisenbahnfähre. Dieser Zustand endete am 17. Juni 1886 mit der Inbetriebnahme der Brücke, worauf der durchgehende Verkehr nach Utsunomiya aufgenommen werden konnte. Dreieinhalb Monate zuvor war auch die Anschlussstrecke von Akabane nach Shimbashi eröffnet worden (die heutige Yamanote-Linie), womit nun eine ununterbrochene Verbindung zum Hafen von Yokohama bestand, die vor allem für den Güterverkehr von großer Bedeutung. Händler im Bahnhof Utsunomiya verkauften erstmals Ekiben, für den Verzehr unterwegs konzipierte Bentō-Gerichte, die mittlerweile aus dem japanischen Reisealltag nicht mehr wegzudenken sind.

Fertigstellung der Strecke
1886 folgten zwei weitere Abschnitte, am 1. Oktober von Utsunomiya nach Nishi-Nasuno und am 1. Dezember von Nishi-Nasuno nach Kuroiso. Im darauf folgenden Jahr kamen nochmals zwei Teilstücke hinzu, am 16. Juli von Kuroiso nach Kōriyama sowie am 15. Dezember von Kōriyama über Fukushima und Sendai zum Hafen von Shiogama an der Ishinomaki-Bucht. Um auch nördlich von Sendai einen rationellen Bauablauf zu ermöglichen, war ein Hafen zwingend erforderlich. Dieser war ursprünglich weiter östlich in Nobiru geplant, doch ein Taifun zerstörte 15. September 1884 die Baustelle komplett. Aus diesem Grund entstand der Hafen 1886 stattdessen in Shiogama. Zwischen Sendai und dem Hafen wurde am 11. Oktober 1888 nachträglich der Bahnhof Iwakiri eröffnet, von wo aus nach einer Planänderung der Weiterbau in Richtung Norden erfolgte. Der Streckenabschnitt zwischen Iwakiri und dem Hafen von Shiogama erhielt später die Bezeichnung Shiogama-Linie und bildete fortan eine kurze Stichstrecke, die bis 1997 in Betrieb blieb.

Von Iwakiri aus reichte die Hauptstrecke ab 16. April 1890 bis nach Ichinoseki. Heftige Regenfälle verursachten am 7. September 1890 schwere Schäden an der Trasse, sodass der Betrieb zwischen Shiroishi und Ōgawara (nördlich von Fukushima) bis zum 20. Oktober vollständig unterbrochen werden musste. Zwölf Tage später, am 1. November 1890, ging der Abschnitt Ichinoseki–Morioka in Betrieb; am selben Tag eröffnete die Nippon Tetsudō auch eine dem Güterverkehr vorbehaltene Strecke zwischen den Tokioter Bahnhöfen Ueno und Akihabara. Schließlich kam am 1. September 1891 der Abschnitt von Morioka über Hachinohe nach Aomori hinzu, womit der Streckenbau abgeschlossen war.

Um den Streckenbau möglichst rasch vorantreiben zu können, hatte die Nippon Tetsudō anfangs relativ wenige Bahnhöfe errichtet. Diese kamen nun nach und nach in großer Zahl hinzu. Kurz nach der Vollendung der Verbindung Ueno–Aomori begann auch der zweigleisige Teilausbau. Den Anfang machten am 25. Oktober 1892 zunächst die Abschnitte Ueno–Akabane und Kawaguchi–Ōmiya. Der Neubau der Brücke über den Arakawa (zwischen Akabane und Kawaguchi) ermöglichte ab 1. April 1895 den durchgehenden zweigleisigen Betrieb auf dem stadtnahen Abschnitt Ueno–Ōmiya. Zwischen Utsunomiya und Yaita war die Trasse in den Sommermonaten von zahlreichen Überschwemmungen betroffen. Die Instandstellungsarbeiten an Brücken und Dämmen verursachten jeweils hohe Kosten und nahmen viel Zeit in Anspruch. Aus diesem Grund beschloss die Bahngesellschaft eine Verlegung der Strecke. Die neue Trasse über Hōshakuji ging am 25. Februar 1897 in Betrieb.

Unglücksfälle und Verstaatlichung

Am 7. Oktober 1899 geschah ein tragisches Unglück, als ein besonders heftiger Taifun zwischen Yaita und Nozaki einen nach Utsunomiya verkehrenden Zug von der Brücke über den Hōki blies. Der Zug stürzte in den Fluss hinunter, wobei 20 Menschen ums Leben kamen. Der Eisenbahnunfall von Nozaki gilt als schwerstes Eisenbahnunglück der Meiji-Zeit. Aufgrund des rasch anwachsenden Verkehrsaufkommens im Großraum Tokio kamen weitere Gleise für den Vorortverkehr hinzu. Als Folge des Eisenbahnverstaatlichungsgesetzes ging das gesamte Streckennetz der Nippon Tetsudō am 1. November 1906 an das staatliche Eisenbahnamt (das spätere Eisenbahnministerium) über. Unmittelbar nach der Verstaatlichung begann der zweigleisige Ausbau in Richtung Oyama. Im Jahr 1908 kamen gleich mehrere Ausbauabschnitte hinzu: Ōmiya–Hasuda am 30. September, Hasuda–Kuki und Koga–Mamada am 6. November, Kuki–Kurihashi am 10. November sowie von der Ausweiche Nakata nach Koga am 20. November. Abgeschlossen waren die Arbeiten mit der Übergabe des zweiten Gleises zwischen Mamada und Oyama am 1. August 1909, nur der Abschnitt zwischen Kurihashi und Nakata mit der Brücke über den Tone blieb vorerst eingleisig. Zwei Monate nachdem die Strecke Ueno–Aomori die offizielle Bezeichnung "Tōhoku-Hauptlinie" erhalten hatte, erfolgte am 16. Dezember 1909 die Elektrifizierung des Abschnitts Ueno–Tabata für den Vorortverkehr. Im April 1913 reichte das zweite Gleis über Oyama hinaus bis nach Utsunomiya.

Ein weiteres schweres Unglück ereignete sich am 29. November 1916 in der Präfektur Aomori zwischen den Bahnhöfen Shimoda und Misawa. Ein Personenzug und ein Güterzug stießen wegen einer nicht vorschriftsgemäßen Handhabung der Signalisation zusammen, wodurch 29 Menschen ihr Leben verloren. Die 1920er Jahre waren von zahlreichen Baumaßnahmen geprägt, um die Kapazität der Strecke zu erhöhen. Gleich drei Abschnitte wurden 1920 durch begradigte, zweigleisige Streckenführungen ersetzt: Kuroiso–Kurodahara am 10. März, Shirasaka–Shirakawa am 10. Oktober und Kurodahara–Shirasaka am 1. November. Hinzu kamen zweigleisige Ausbauten mehrerer bereits bestehender Abschnitte: Sendai−Nigatake am 15. Februar 1920, Nigatake–Iwakiri am 23. April 1920, Kurihashi–Nakata am 5. März 1920 (zweite Tone-Brücke), Nagamachi–Sendai am 5. Dezember 1922, Iwanuma–Masuda am 1. September 1923 und Masuda–Nagamachi am 1. Dezember 1923. Der Abschnitt zwischen Hanaizumi und Ichinoseki erhielt am 16. Oktober 1924 eine neue Streckenführung und am 25. Oktober 1926 kam ein zweites Gleis zwischen Aomori und Uramachi hinzu.

Die letzte bestehende Lücke zwischen Ueno und Kanda konnte am 1. November 1925 geschlossen werden, wenn auch vorerst nur zweigleisig. Dies ermöglichte es, die Züge der Tōhoku-Hauptlinie zum neuen Endbahnhof Tokio und jene der parallel verlaufenden, elektrifizierten Keihin-Tōhoku-Linie nach Ueno zu führen. Der Abschnitt Tabata–Akabane war ab 1. Februar 1928 elektrifiziert, genau zwei Monate später stand zwischen Ueno und Tokio eine zweite Doppelspur zur Verfügung. Das Eisenbahnministerium strebte im Tokioter Innenstadtbereich auch eine Entflechtung von Fern-, Güter- und Nahverkehr an. Aus diesem Grund baute sie nördlich des bestehenden Rangierbahnhofs Nippori eine weitere Doppelspur, nahm den Fernverkehr aus dem überlasteten Knotenpunkt Tabata heraus und verlegte diesen zum neuen Bahnhof Oku, der am 20. Juni in Betrieb ging. Der Ausbau der Güterverkehrsanlagen in Akihabara verzögerte sich, sodass die ebenerdige Güterlinie Akihabara–Ueno erst am 1. Juli 1932 stillgelegt werden konnte. Ab 1. September desselben Jahres reichte der elektrifizierte Vorortverkehr über Akabane hinaus bis nach Ōmiya.

Während des Pazifikkriegs musste der Fahrplan sukzessive ausgedünnt werden, nach Kriegsende war die Tōhoku-Hauptlinie jedoch eine wichtige Verbindung für Truppenzüge der alliierten Besatzungstruppen zwischen Tokio und Sapporo. Schwere Regenfälle im Zusammenhang mit dem Taifun Kathleen führten am 15. September 1947 zu Schäden an verschiedenen Stellen der Strecke, verursacht durch Überschwemmungen, Unterspülungen des Gleisbetts und Dammbrüche. Ab 1. Juni 1949 war die Japanische Staatsbahn für den Betrieb zuständig. Wenige Wochen später ereignete sich am 6. Juli zwischen den Bahnhöfen Kanayagawa und Matsukawa in der Präfektur Fukushima der Matsukawa-Zwischenfall, eine durch einen Sabotageakt herbeigeführte Entgleisung. Drei Mitglieder des Zugpersonals starben, jedoch keine Passagiere. Zusammen mit dem Mitaka-Zwischenfall und dem Shimoyama-Zwischenfall war dies einer der drei großen Kriminalfälle der Nachkriegszeit, in denen die Regierung die Kommunistische Partei Japans und die Eisenbahnergewerkschaft der Sabotage beschuldigte (Red Purge).

Doppelspurausbau und Elektrifizierung
Der in den frühen 1950er Jahren einsetzende Wirtschaftsboom erforderte eine durchgreifende Modernisierung, einerseits durch den Doppelspurausbau sämtlicher noch bestehender einspuriger Abschnitte, andererseits durch die vollständige Elektrifizierung der Strecke. Die Gleisarbeiten begannen 1951 und in mehreren Dutzend kleinen Etappen nahm die Staatsbahn das zweite Gleis jeweils unmittelbar nach der Fertigstellung in Betrieb. Nördlich von Sendai entstand stattdessen zwischen Rikuzen-Sannō und Shinainuma eine vollständig neue Streckenführung entlang der Ishinomaki-Bucht und zum Teil parallel zur Senseki-Linie, die am 9. Juli 1956 in Betrieb ging. Die alte Trasse von Iwakiri über Rifu nach Shinainuma blieb noch einige Jahre bestehen, doch dann legte die Staatsbahn den nördlich von Rifu gelegenen Teil am 1. Juli 1962 still. Die übrig gebliebene Stichstrecke nach Rifu (auch als Rifu-Linie bezeichnet) dient seither ausschließlich dem Vorortverkehr. Mit der Inbetriebnahme des zweiten Gleises zwischen der Ausweiche Ishibumi und Noheji am 5. August 1968 war der Doppelspurausbau der gesamten Tōhoku-Hauptlinie nach 17 Jahren abgeschlossen.

Die Elektrifizierung außerhalb der Metropolregion Tokio nahm zehn Jahre in Anspruch und begann am 14. April 1958 mit dem Teilstück Utsunomiya–Ōmiya. Die weiteren Abschnitte kamen wie folgt hinzu: Ōmiya–Hōshakuji am 15. Dezember 1958, Hōshakuji–Kuroiso am 22. Mai 1959, Kuroiso–Shirakawa am 1. Juli 1959, Shirakawa–Fukushima am 1. März 1960, Fukushima–Sendai am 1. März 1961, Sendai–Morioka am 1. Oktober 1965 und Morioka–Aomori am 22. August 1968. Die Staatsbahn hatte sich dazu entschieden, auf der Strecke bis zum Bahnhof Kuroiso Gleichspannung anzuwenden, nördlich davon jedoch die leistungsstärkere Wechselspannung; diese Trennung besteht bis heute. Insgesamt ermöglichte die Modernisierung eine deutliche Ausweitung des Angebots. Ab 2. Oktober 1978 stand auch die Zweigstrecke Iwakiri–Rifu unter Strom.

Erneute Privatisierung
Im Rahmen der Staatsbahnprivatisierung ging die Tōhoku-Hauptlinie am 1. April 1987 in den Besitz der neuen Gesellschaft JR East über, während JR Freight nun für den Güterverkehr zuständig war. Um den Vorortverkehr besser unterscheiden und vermarkten zu können, führte JR East für den Abschnitt Tokio–Kuroiso mit dem Fahrplanwechsel am 10. März 1990 die Bezeichnung Utsunomiya-Linie ein. Durch einen Taifun verursachte sintflutartige Regenfälle unterspülten vom 27. bis 31. August 1998 das Gleisbett an zahlreichen Stellen, weshalb der Bahnbetrieb auf dem über 400 km langen Abschnitt zwischen Kamasusaka und Morioka vorübergehend komplett eingestellt werden musste. Während der größte Teil der Schäden innerhalb einer Woche behoben werden konnte, blieb der Abschnitt von Kuroiso nach Shin-Shirakawa bis zum 25. September unterbrochen. Am 1. Dezember 2001 führte JR East die Shōnan-Shinjuku-Linie ein, die zwischen Ōmiya und Akabane parallel zur Tōhoku-Hauptlinie verläuft.

Gleichzeitig mit der Verlängerung der Schnellfahrstrecke Tōhoku-Shinkansen nach Hachinohe lagerte JR East am 1. Dezember 2002 den regionalen Personenverkehr zwischen Morioka und Aomori an zwei neu gegründete Bahngesellschaften aus, die Iwate Ginga Tetsudō und die Aoimori Tetsudō. Erstere ist seither für den Abschnitt Morioka–Metoki zuständig, letztere übernahm den Abschnitt Metoki–Hachinohe. Am 4. Dezember 2010 ging der Abschnitt Hachinohe–Aomori ebenfalls an die Aoimori Tetsudō über. Als Folge des verheerenden Tōhoku-Erdbebens vom 11. März 2011 stellte JR East den Verkehr auf der gesamten Strecke ein. Schrittweise konnte er bis zum 21. April wieder aufgenommen werden. Seit dem 14. März 2015 ermöglicht die Ueno-Tokio-Linie im Stadtzentrum Tokios, die zum Teil die Trasse der Tōhoku-Hauptlinie nutzt, eine Verknüpfung der Utsunomiya- und der Takasaki-Linie mit der Tōkaidō-Hauptlinie.

Eingesetzte Fahrzeuge
Auf der Tōhoku-Hauptlinie werden Fahrzeuge verschiedener Baureihen eingesetzt (Stand: 2022).

Zwischen Tokio und Kuroiso:
 JR-Baureihe E231
 JR-Baureihe E233
 JR-Baureihe E131

Zwischen Kuroiso und Morioka:
 JR-Baureihe E531
 JR-Baureihe 701
 JR-Baureihe E721
 JR-Baureihe HB-E210
 JR-Baureihe Kiha 100
 JR-Baureihe Kiha 110

Güterverkehr:
 JR-Freight-Baureihe DD200
 JR-Freight-Baureihe EH500
 JR-Freight-Baureihe EF65
 JR-Freight-Baureihe EF66
 JR-Freight-Baureihe EF210
 JR-Freight-Baureihe EH200

Liste der Bahnhöfe

(Bahnhöfe zwischen Tokio und Kuroiso siehe Utsunomiya-Linie)

Kuroiso – Ichinoseki
SF = Sendai-Flughafenlinie; ST = Senseki-Tōhoku-Linie
● = alle Züge halten an diesem Bahnhof; ▲ = nur einige Züge halten
↑FS = zum Flughafen Sendai; ↓SL = zur Senseki-Linie

Ichinoseki – Morioka
KA = Kaisoku "Aterui" (Rapid); Ha = Hamayuri
● = alle Züge halten an diesem Bahnhof; ▲ = nur einige Züge halten

Iwakiri – Rifu
(siehe Rifu-Linie)

Weblinks

 Streckennetz von JR East (PDF, 1,2 MB)

Einzelnachweise

Bahnstrecke in Japan
Verkehrsbauwerk in der Präfektur Aomori
Verkehrsbauwerk in der Präfektur Fukushima
Verkehrsbauwerk in der Präfektur Ibaraki
Verkehrsbauwerk in der Präfektur Iwate
Verkehrsbauwerk in der Präfektur Miyagi
Verkehrsbauwerk in der Präfektur Saitama
Verkehrsbauwerk in der Präfektur Tochigi
Verkehrsbauwerk in der Präfektur Tokio
East Japan Railway Company

redpajama_set_name: RedPajamaWikipedia


Lowest prices guaranteed on environmentally friendly Reclaimed & Recycled Solid Wood Furniture. NO MIDDLEMEN…BUY DIRECT & SAVE!
We are home to unique furniture made with character, from sustainably sourced timber with finishes that enhance it's beautiful rustic charm.
Manufactured using FCS certified 'Salvaged Timbers', with fast delivery times & all at affordable prices.
TSAWWASSEN MILLS 'OUTLET STORE' opening soon!
Based in the beautiful Fraser Valley, BC, our boutique style stores offer unique and environmentally friendly solid wood living, dining and bedroom furniture.
We are particularly proud of the way in which our materials are sourced and the traditional ways in which our furniture is crafted and finished.
Our products are FSC certified 'recycled' timbers. Most of our wood is larch, pine, fir and assorted semi hardwoods reclaimed from discarded packing crates, pallets and dismantled buildings.
After the wood has been collected, all nails and debris are removed by hand. The recycled wood is kiln dried to exacting specifications, the off-cut timber is used to fuel the kilns and boilers. Strict control of moisture content ensures minimal warping or splitting. Each product is assembled by hand. Original nail holes and imperfections are retained to enhance the character of the wood. The hand brushing finishing technique creates a unique patina, colour and a feeling of warmth. The result is furniture which will add character and style to any home, for years to come.
The Forest Stewardship Council is an international non-profit organization to promote responsible management of the world's forests.
The Forest Stewardship Council (FSC) logo is your assurance that it is made with, or contains, wood that comes from FSC certified forests or from post-consumer waste.
In addition to forest certification, the FSC system includes a certified chain of custody that tracks the timber through every stage in the supply chain from the forest to the final user. This is monitored through the invoicing process and the final label on the product has a code that confirms that the item is genuinely FSC.
Warehouse spring clean. All New England dining sets in 'two tone' only.. on sale to clear.


Home > Posts tagged "So"
Acai berries, goji berries, kale, pineapples and now mares' milk — according to nutritionist Raphaël Gruman, there's no need to rush out and buy these trending "superfoods". Better and less expensive dietary options are available to people who want to get in greater quantities of natural vitamins and antioxidants. * Acai berries: The fruit of the South American acai palm is a big seller in organic grocery stores. Acai berries are rich in vitamin C, but so are a majority of fruits, notably kiwi fruit and in particular golden kiwi fruit….


text:
Q: TypeError: Cannot read property 'MyProperty' of undefined I have an array of object pairs like so:
0: pairs {_stim1: {img: "images/F111C.png", gender: 0, rating: "3"}, _stim2: {img: "images/F042C.png", gender: 0, rating: "3"}}
1: pairs {_stim1: {…}, _stim2: {…}}
2: pairs {_stim1: {…}, _stim2: {…}}
3: pairs {_stim1: {…}, _stim2: {…}}
4: pairs {_stim1: {…}, _stim2: {…}}
5: pairs {_stim1: {…}, _stim2: {…}}
6: pairs {_stim1: {…}, _stim2: {…}}
7: pairs {_stim1: {…}, _stim2: {…}}

I am trying to reduce the array to 6 pairs and as close to 3 pairs of each gender property (1 or 0) as possible. To do this I have this clumsy solution where I iterate over the list and append 3 pairs objects with gender: 0 to a list and then 3 with gender: 1, like this:
pair_count = 0;
if ((stim_pairs.length > 6)) {
    for (var i, _pj_c = 0, _pj_a = stim_pairs, _pj_b = _pj_a.length; (_pj_c < _pj_b); _pj_c += 1) {
        i = _pj_a[_pj_c];
        if ((pair_count < 3)) {
            if ((i.stim1.gender === 0)) {
                initial_stim_pairs.push(i);
                final_stim_pairs.push(i);
                pair_count += 1;
            }
        }
    }
    for (var i, _pj_c = 0, _pj_a = stim_pairs, _pj_b = _pj_a.length; (_pj_c < _pj_b); _pj_c += 1) {
        i = _pj_a[_pj_c];
        if ((pair_count < 6)) {
            if ((i.stim1.gender === 1)) {
                initial_stim_pairs.push(i);
                final_stim_pairs.push(i);
                pair_count += 1;
            }
        }
    }
}

However, I 'i.stim1' and 'i.stim2' returns 'undefined'... and I get this error:
'Cannot read property 'gender' of undefined'
What am I doing wrong?

A: you can validate if i.stim1.gender property exists
if(typeof i.stim1.gender !== 'undefined'){ //your code here}

A: I have resolved your errors from your code so it is working, but you won't be getting the correct answer from it. The initial issue was it should be i._stim1.gender and not i.stim1.gender. After that some declarations are missing, make sure you use a debugger and run this code on your console to understand the issue.
var pair_count = 0,
initial_stim_pairs = [],
final_stim_pairs = [];
if ((stim_pairs.length > 6)) {
    for (var i, _pj_c = 0, _pj_a = stim_pairs, _pj_b = _pj_a.length; (_pj_c < _pj_b); _pj_c ++) {
        i = _pj_a[_pj_c];
debugger;
        if ((pair_count < 3)) {
            if ((i._stim1.gender === 0)) {
                initial_stim_pairs.push(i);
                final_stim_pairs.push(i);
                pair_count += 1;
            }
        }
    }
    for (var i, _pj_c = 0, _pj_a = stim_pairs, _pj_b = _pj_a.length; (_pj_c < _pj_b); _pj_c += 1) {
        i = _pj_a[_pj_c];
        if ((pair_count < 6)) {
            if ((i._stim1.gender === 1)) {
                initial_stim_pairs.push(i);
                final_stim_pairs.push(i);
                pair_count += 1;
            }
        }
    }
}

redpajama_set_name: RedPajamaStackExchange


IN DETAIL 1949, For noted designer Pauline Trigere, "Cut is everything." Her 1950 black-tie, wool suit jacket with silk-faille lapels and cuffs, still stunningly smart, displays the purity of shape that brought her fame and, in the first of two Coty awards, fashion's equivalent of the Oscar. In this garment (its matching skirt features a cummerbund-like silk-faille waistband), the slightly flared hip pocket is part the princess-cut jacket, the seams cleverly forming the pocket opening.